2010-08-30 33 views
0

我新的WPF和還沒有的事情應該怎麼做紮實抓好...WPF結合XML數據GUI項目

我有一個存儲配置數據的XML文件,我想在這個xml文件中顯示在gui前端的數據。

我目前使用的XmlDataProvider在一組數據

數據的讀取大致是這樣:

<Items> 
    <Item name="item01"> 
    <Position x="0", y="0"/> 
    </Item> 
    <Item name="item02"> 
    <Position x="0", y="0"/> 
    </Item> 
    <Item name="item03"> 
    <Position x="0", y="0"/> 
    </Item> 
</Items> 

的XmlDataProvider被聲明爲一個資源如下

<Window.Resources> 
    <XmlDataProvider x:Key="SiteConfigFile" XPath="SiteConfig" > 
    </XmlDataProvider> 
</Window.Resources> 

然後,我可以通過下拉菜單啓用組合框來顯示Xml文件中的每個項目:

<ComboBox Name="ButtonMapping" ItemsSource="{Binding Source={StaticResource SiteConfigFile}, XPath=Items/Item}" DisplayMemberPath="@name" SelectedIndex="0"> 

這一切工作正常。

我現在要解決的問題是...取決於從組合框中選擇哪個項目,具有其2個屬性的相應位置元素需要顯示在gui上的文本框中... do ii需要生成動態的XPath,這似乎有點亂...什麼是做到這一點的最好辦法,我的想法:(

回答

1

如何約上幾個板的內包裝的文本框?參見下面的例子。我用外板(邊界),其的DataContext綁定到ComboBox.SelectedItem屬性。然後,另一個內板(StackPanel中)被綁定到在XML的元素。最後該內面板內,我放置TextBox控件,其文本被綁定到@x and @y

<Border DataContext="{Binding ElementName=ButtonMapping, Path=SelectedItem}"> 
    <StackPanel DataContext="{Binding XPath=Position}"> 
     <TextBlock Text="x:"/> 
     <TextBox Text="{Binding [email protected]}"/> 
     <TextBlock Text="y:"/> 
     <TextBox Text="{Binding [email protected]}"/> 
    </StackPanel> 
</Border> 

請注意,雖然我使用了兩個文本框來顯示x和y屬性。如果你想只使用一個,你將不得不使用的IValueConverter正確「格式」你要顯示的字符串。

+0

非常感謝業內人士! 你的建議工作完美! – Riina 2010-08-31 20:33:11

+0

很高興提供幫助。 =) – ASanch 2010-08-31 20:37:00