WPF DataGrid с простым примером XmlDataProvider

После нескольких часов попыток достать какой-нибудь рабочий образец, я решил попытать счастья здесь. Я новичок в 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, он должен показать мне сетку с автомобилями ... но это не так. Я предполагаю, что моя ошибка связана с привязкой. У меня нет такой хорошей идеи привязки в WPF, но я учусь. Итак, как мне правильно указать ItemSource на моем cars.xml?

10x.


person aviv    schedule 20.07.2010    source источник


Ответы (1)


Вы должны указать свой 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:

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

Вот и все.

person northernwind    schedule 20.07.2010