XmlDataProviderを使ってXmlをバインドする(C# / Xaml)

2013年1月13日日曜日

c# tips visualstudio2012

t f B! P L
これまで、Xmlのデータを使おうと思った場合、XmlDocumentに突っ込んで、パースして、必要なデータのみを抜き出したClassを作って、バインドしていたのですが、これをもっと楽にできないかと思って、調べてみると、XmlDataProvider(MSDN)というものがあることがわかりました。



というわけで、早速サンプル。

<Grid>
    <Grid.Resources>
        <XmlDataProvider x:Key="SampleData" XPath="route/region">
            <XmlDataProvider.Source>[Uri]</XmlDataProvider.Source>
        </XmlDataProvider>
    </Grid.Resources>

    <ListBox>
        <ListBox.ItemsSource>
            <Binding Source="{StaticResource SampleData}" />
        </ListBox.ItemsSource>

        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock FontSize="12" Foreground="Red">
                    <TextBlock.Text>
                        <Binding XPath="name"/>
                    </TextBlock.Text>
                </TextBlock>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>
XmlDataProvider.SourceにはUriを設定できるようです。

今度はこれをMVVMモデルで使うのか。
たぶん、XmlDataProviderオブジェクトを作って、それをItemsSourceにバインドするのかな。
やったことないからわかんないけど……。

QooQ