为什么XAML元素到xml绑定只能部分工作?

时间:2009-01-23 15:24:46

标签: xml xaml binding listbox

在下面的代码中,ListBox中填充了XML文件中颜色的名称,但这些名称奇怪地没有出现在TextBox中。

但是,如果将文本框绑定到静态“lbColor2”,则会显示这些名称。

那么当这些名称来自XML源代码时,它们可能会有什么不同呢?这会使它们无法传递?

<StackPanel>
    <StackPanel.Resources>
        <XmlDataProvider x:Key="ExternalColors" Source="App_Data/main.xml" XPath="/colors"/>
    </StackPanel.Resources>
    <TextBlock Text="Colors:"/>
    <ListBox Name="lbColor" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Source={StaticResource ExternalColors}, XPath=color/@name}"/>
    <ListBox Name="lbColor2">
        <ListBoxItem>Red</ListBoxItem>
        <ListBoxItem>Orange</ListBoxItem>
        <ListBoxItem>Cyan</ListBoxItem>
    </ListBox>
    <TextBlock Text="You selected color:"/>
    <TextBox
        Text="{Binding ElementName=lbColor, Path=SelectedItem.Content}"
        >
    </TextBox>
</StackPanel>

这是XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<colors>
  <color name="Pink"/>
  <color name="Cyan"/>
  <color name="LightBlue"/>
  <color name="LightGreen"/>
  <color name="Another One"/>
</colors>

1 个答案:

答案 0 :(得分:1)

您已将TextBox绑定到SelectedItem.Content,但XmlAttribute没有名为Content的属性。换到这个,你会没事的:

<TextBox Text="{Binding ElementName=lbColor, Path=SelectedItem.Value}"/>