不显示 WPF 组合框的选定值

本文关键字:显示 WPF 组合 | 更新日期: 2023-09-27 18:30:20

我有一个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;

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

感谢您的帮助和时间

不显示 WPF 组合框的选定值

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

从 MSDN:

DisplayMemberPath:获取或设置源对象上值的路径,以用作对象的可视表示形式。

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

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

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

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