WPF DataGrid с простым примером XmlDataProvider - PullRequest
0 голосов
/ 20 июля 2010

После нескольких часов, пытаясь найти какой-то рабочий образец, я решил попытать счастья здесь.Я новичок в WPF, но со временем все должно стать проще ...

Я пытаюсь создать DataGrid, показывающий файл XML, который у меня есть.Вот и все.

Я имею в своем приложении cars.xml

  <cars>
    <car type="Ford" size="4" />
    <car type="Mercedes" size="2" />
    <car type="BMW" size="1" />
  </cars>

Теперь у меня есть UserControl, который имеет DataGrid (используя .NET 3.5 SP1 на VS2008 с CodePlex ToolKit):

   <dg:DataGrid ItemsSource="{Binding cars}" />

Как я понимаю, поскольку у него есть AutoColumn, он должен показать мне сетку с автомобилями ... но это не так.Я предполагаю, что моя ошибка связана с Binding.У меня нет такой хорошей идеи связывания в WPF, но я учусь.Так как же правильно указать ItemSource на мой cars.xml?

10x.

1 Ответ

1 голос
/ 20 июля 2010

Вы должны указать свой XML-файл в качестве ресурса вашей сетки или вашего окна.Например:

<Window.Resources>
<XmlDataProvider XmlNamespaceManager="{StaticResource ns}" x:Key="rss" Source="http://weather.yahooapis.com/forecastrss?p=RSXX1410&amp;u=c" XPath="/rss/channel" />
...

Статический ресурс ns - это пространство имен для различных префиксов - если оно есть в вашем xml:

<XmlNamespaceMappingCollection x:Key="ns">
        <XmlNamespaceMapping Prefix="yweather" Uri="http://xml.weather.yahoo.com/ns/rss/1.0" />
        <XmlNamespaceMapping Prefix="geo" Uri="http://www.w3.org/2003/01/geo/wgs84_pos#" />
    </XmlNamespaceMappingCollection>
...
</Window.Resources>

Теперь вы можете привязать элементы xaml к вашемуxml-elements:

<Grid DataContext="{Binding Source={StaticResource rss}, XPath=item}">
     <Image  Width="200" Height="180" Source="{Binding XPath=yweather:condition/@code, Converter={StaticResource WeatherCodeToImageConverter}}" />
</Grid>

Вот так.

...