0

我有以下 XML 文件:

<Palettes>
  <Palette>
    <Primary Name="Black"/>
    <Other Name="Blue"/>
    <Other Name="Red"/>
  </Palette>
  <Palette>
    <Primary Name="Green"/>
    <Other Name="Orange"/>
    <Other Name="Yellow"/>
    <Other Name="Violet"/>
  </Palette>
</Palettes>

我想要两个组合框:一个显示每个调色板的原色,另一个显示在第一个组合中选择的调色板的“其他”颜色。

如果可能的话,我希望在 XAML 文件中而不是在代码隐藏中完成此数据绑定。

我有以下 XAML 文件:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="80" Width="350">
    <Window.Resources>
        <XmlDataProvider x:Key="Palettes" Source="pack://siteoforigin:,,,/Palettes.xml" />
    </Window.Resources>
    <Grid>
        <ComboBox x:Name="cbxPrimary"
                  DisplayMemberPath="Primary/@Name"
                  ItemsSource="{Binding Mode=OneWay, Source={StaticResource Palettes}, XPath=/Palettes/Palette}"
                  Margin="10,10,175,10"
                  SelectedIndex="0"/>
        <ComboBox x:Name="cbxOther"
                  DisplayMemberPath="Other/@Name"
                  ItemsSource="{Binding ElementName=cbxPrimary, Mode=OneWay, Path=SelectedItem}"
                  Margin="175,10,10,10"
                  SelectedIndex="0"
                  SelectedValue="{Binding XPath=./Other/@Name}"
                  SelectedValuePath="./Other/@Name"/>
    </Grid>
</Window>

但是,这将在第二个组合框中显示“其他”颜色的空白条目:

空白组合框

我无法弄清楚我是否遗漏了什么,或者是否编码不正确。如何纠正?

4

1 回答 1

2

顾名思义DisplayMemberPath,它是成员的路径,而不是任意嵌套的节点或属性。我将按如下方式更改绑定:

<ComboBox x:Name="cbxOther"
          DataContext="{Binding ElementName=cbxPrimary, Path=SelectedItem}"
          ItemsSource="{Binding XPath=./Other/@Name}"
          Margin="175,10,10,10"
          SelectedIndex="0"/>

使用SelectedValue/Path并且DisplayMemberPath仅在显示应该与基础值不同时才有意义。

于 2012-08-13T20:15:28.200 回答