gpt4 book ai didi

c# - 多个 ComboBox.DisplayMemberPath 选项?

转载 作者:太空狗 更新时间:2023-10-30 00:02:52 24 4
gpt4 key购买 nike

我将一组对象绑定(bind)到 ComboBox。我想要实现的是一个显示我的对象的两个属性的组合框。但是,我还没有想出如何使组合框显示多个 DisplayMemberPaths。这可能吗?

这就是我目前设置绑定(bind)和设置 DisplayMemberPath 的方式:

Binding comboBinding = new Binding();
comboBinding.Source = squad_members; //squad_members is the object collection

BindingOperations.SetBinding(Character_ComboBox, ComboBox.ItemsSourceProperty, comboBinding);
Character_ComboBox.DisplayMemberPath = "Name"; //
//Character_ComboBox.DisplayMemberPath = "Name" + "Age"; //failed attempt
Character_ComboBox.SelectedValuePath = "Name";

最佳答案

首先,您应该在 XAML 中进行绑定(bind)而不是代码隐藏。

您可以提供 ItemTemplate 并使用 StringFormat MultiBinding 像这样:

<ComboBox ItemsSource="{Binding YourCollection}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} - {1}">
<Binding Path="Name"/>
<Binding Path="Age"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

以防您仍然想在代码后面进行绑定(bind)。

您可以通过覆盖底层源类中的 ToString() 方法完全省略设置 DisplayMemberPath。因为,如果未提供 DisplayMemberPath,则会在内部调用 ToString()。

假设您的集合类型为 List<Person> ,因此您可以覆盖 Person 类上的 ToString():

public override string ToString()
{
return Name + Age;
}

有了这个,绑定(bind)将看起来像这样(不需要 DisplayMemberPath)

Binding comboBinding = new Binding();
comboBinding.Source = squad_members; //squad_members is the object collection

BindingOperations.SetBinding(Character_ComboBox,
ComboBox.ItemsSourceProperty, comboBinding);

关于c# - 多个 ComboBox.DisplayMemberPath 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25346725/

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