1

我有一个xml文件如下:-

<Root>
   <Level>
       <id>1</id>
       <display>Level1</display>
   </Level>
   <Level>
       <id>2</id>
       <display>Level2</display>
   </Level>
</Root>

我有一个 WPF 组合框:-

<ComboBox x:Name="cmbLevel" HorizontalAlignment="Left" Margin="73,73,0,0" VerticalAlignment="Top" Width="120"
       SelectedValuePath="id" SelectedValue="{Binding XPath=/Root/Level/id}" 
       ItemsSource="{Binding XPath=/Root/Level}"
       IsSynchronizedWithCurrentItem="True" />

插入和显示效果很好,但是问题是当我想用选定的值填充这个组合框时。

目前我有以下

private void InitCombo(XDocument xdoc, ComboBox comboBox, string NodeName)
{
    var displayItems = from ele in xdoc.Descendants(NodeName)
    select new
    {
         id = (string)ele.Element("id"),
         display = (string)ele.Element("display")
    };            

    comboBox.DisplayMemberPath = "display";
    comboBox.SelectedValuePath = "id";
    comboBox.ItemsSource = displayItems.ToList();
 }

然后我添加选定的值,如下所示:

cmbLevel.SelectedValue = level;

我是否需要添加任何其他内容才能在我的组合框中显示选定的值?我需要重新绑定组合框吗?

感谢您的帮助和时间

4

1 回答 1

1

您似乎对使用ComboBox选择选项有些困惑。我建议您阅读 MSDN 上的如何:使用 SelectedValue、SelectedValuePath 和 SelectedItem页面以获取帮助。有多种方法可以在 a 中进行选择ComboBox,所有这些方法都在链接的文章中进行了清楚的描述。

来自 MSDN:

DisplayMemberPath:获取或设置源对象上的值的路径,作为对象的可视化表示。

SelectedValue:获取或设置SelectedItem的值,通过SelectedValuePath获取。

SelectedValuePath:获取或设置用于从 SelectedItem 中获取 SelectedValue 的路径。

SelectedItem:获取或设置当前选择中的第一项,如果选择为空则返回null

另外,为什么要在代码XAML 中设置相同的属性?

于 2013-09-06T09:54:40.313 回答