c# - 带有列表的 ComboBox 上的多个 SelectedValuePath/SelectedValue 绑定> 物品来源
问题描述
我有一个ComboBox
which 有一个ItemSource
of List<Tuple<long, long, string>>
。在元组Item3
中是一些用户友好的显示文本,Item1
并且Item2
是两个不同的(但一对一相关的)序列/键,当用户更改所选项目时,我需要在绑定对象上更新它们。
我可以像这样轻松地绑定这些序列之一:
<ComboBox ItemsSource="{Binding MyList, Mode=OneWay}"
DisplayMemberPath="Item3"
SelectedValuePath="Item1"
SelectedValue="{Binding MyObject.FirstSequence, Mode=TwoWay}"
我想要实现的是:
<ComboBox ItemsSource="{Binding MyList, Mode=OneWay}"
DisplayMemberPath="Item3"
SelectedValuePath1="Item1"
SelectedValue1="{Binding MyObject.FirstSequence, Mode=TwoWay}"
SelectedValuePath2="Item2"
SelectedValue2="{Binding MyObject.SecondSequence, Mode=TwoWay}"
是否有可能通过多重绑定来实现这样的目标?
然而,我已经尝试MyObject.SecondSequence
在 setter 中进行设置,并且最初也是从数据库中填充的,我只需要在用户进行更改时更新它们,因此在 99% 的情况下这会增加相当多的额外和不必要的开销。MyObject.FirstSequence
MyObject.FirstSequence
MyObject.SecondSequence
我可能会更改MyObject.FirstSequence
并更改MyObject.SecondSequence
为包含两个序列的类,如下所示:
class Sequences
{
string DisplayText { get; set; }
long FirstSequence { get; set; }
long SecondSequence { get; set; }
}
然后设置并绑定到ComboBox.ItemsSource
,但这将意味着很多其他代码更改,我想先探索其他选项。List<Sequences>
MyObject.Sequences
解决方案
视图模型可以具有SelectedTuple
设置以下属性的属性MyObject
:
private Tuple<long, long, string> selectedTuple;
public Tuple<long, long, string> SelectedTuple
{
get => selectedTuple;
set
{
selectedTuple = value;
MyObject.FirstSequence = selectedTuple.Item1;
MyObject.SecondSequence = selectedTuple.Item2;
NotifyPropertyChanged(nameof(SelectedTuple));
}
}
它的设置如下所示 - 最初,但也可能在PropertyChanged
附加到的事件处理程序中MyObject
。
SelectedTuple = MyList.FirstOrDefault(t =>
t.Item1 == MyObject.FirstSequence && t.Item2 == MyObject.SecondSequence);
该SelectedTuple
属性将是这样的:
<ComboBox ItemsSource="{Binding MyList}"
SelectedItem="{Binding SelectedTuple}"
DisplayMemberPath="Item3"/>
推荐阅读
- grpc - Java中的gRPC - 如何接收文件内容作为响应
- android - 按部分文本在 ORMLite 中搜索
- php - PHP没有捕获ajax请求
- python - 如何将列表转换为 ASCII
- java - 在带有参数的注释之前未调用方面
- javascript - 用 JavaScript 中的键替换 JSON 对象数组中的所有值
- azure - 尝试在 Azure CLI 中获取 Azure IoT 中心的连接字符串时出错
- kubernetes - 从 Kubernetes 集群中安全关闭节点
- c++ - 我们可以在封闭类模板实例化之后声明模板类成员的部分特化吗?
- angular - Angular 多个 http.get 请求