gpt4 book ai didi

c# - 显示数据绑定(bind) WPF 组合框的默认值

转载 作者:IT王子 更新时间:2023-10-29 04:31:29 25 4
gpt4 key购买 nike

我有一个数据绑定(bind) WPF 组合框,我在其中使用 SelectedValuePath 属性根据对象文本以外的内容选择选定值。这可能最好用一个例子来解释:

<ComboBox ItemsSource="{Binding Path=Items}"
DisplayMemberPath="Name"
SelectedValuePath="Id"
SelectedValue="{Binding Path=SelectedItemId}"/>

这个东西的数据上下文看起来像这样:

DataContext = new MyDataContext
{
Items = {
new DataItem{ Name = "Jim", Id = 1 },
new DataItem{ Name = "Bob", Id = 2 },
},
SelectedItemId = -1,
};

当我显示预填充的数据时,这一切都很好,其中 SelectedItemId 与有效的 Item.Id 匹配。

问题是,在新项目 的情况下,SelectedItemId 是未知的。 WPF 所做的是将组合框显示为空白。 我不想要这个。我想禁止组合框中的空白项;我希望它显示列表中的第一项。

这可能吗?我可以编写一些代码来显式地预先设置 SelectedItemId,但由于 UI 中的缺陷而不得不更改我的数据模型似乎不对。

最佳答案

我认为您将不得不在这里做一些手动工作才能获得此行为。您可以在首次显示 ComboBox 时检查后面的代码,无论 SelectedItemId 是否匹配,然后根据它更改选定的索引。或者,如果您知道在没有对应项时 SelectedItemId 将始终为 -1,则可以使用数据触发器。

方法一:

if (!DataContext.Items.Exists(l => l.Id == DataContext.SelectedItemId))
{
MyComboBox.SelectedIndex = 0; //this selects the first item in the list
}

方法二:

<Style TargetType="ComboBox">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedItemId}" Value="-1">
<Setter Property="SelectedIndex" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>

关于c# - 显示数据绑定(bind) WPF 组合框的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1910896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com