2010-07-20 90 views
0

經過幾個小時試圖達成一些工作樣本,我決定在這裏嘗試我的運氣。我是WPF的新手,但事情應該隨着時間變得更容易...WPF DataGrid和XmlDataProvider簡單示例

我想要一個DataGrid顯示我有一個XML文件。而已。

我在我的應用程序cars.xml

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

現在我有有一個DataGrid(使用VS2008 .NET 3.5 SP1與CodePlex上工具包),一個用戶控件:

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

正如我瞭解,因爲它有AutoColumn它應該向我展示一個網格與汽車......但事實並非如此。 我想我的錯誤是與綁定。 WPF中我沒有這麼好的綁定理念,但我正在學習。那麼我如何正確地將ItemSource指向我的cars.xml呢?

10x。

回答

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> 

就是這樣。