你是如何处理在MVVM的SelectionChanged一个ComboBox?
-
09-09-2019 - |
题
对于那些做纯MVVM,你怎么没有恢复到后面的代码处理组合框SelectionChanged事件?
我试图例如 AttachedBehaviors 但事件= “SelectedChanged” 不支持:
<ComboBox>
<ComboBoxItem Content="Test1">
<c:CommandBehaviorCollection.Behaviors>
<c:BehaviorBinding Event="SelectionChanged"
Command="{Binding SelectedChanged}"
CommandParameter="MainBorder123"/>
</c:CommandBehaviorCollection.Behaviors>
</ComboBoxItem>
<ComboBoxItem Content="Test2"/>
<ComboBoxItem Content="Test3"/>
</ComboBox>
解决方案
您会使用一个数据触发器,以不同的UI元素触发一个事件,例如“启用/禁用,或可见/不可见”
如果你想选择的元素来显示对象数据在其他UI元素,那么你将使用数据绑定和设置为被绑定到在组合框中的当前选择的项目的UI数据显示元件的的datacontext
其他提示
这职位是很老,但因为我得到了同样的问题。这是我如何解决了它(使用框架4.0):该想法是使用System.Windows.Interactivity
在XAML:
<ComboBox ItemsSource="{Binding Items}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectionChangedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
然后你只需要实现您的视图模型的SelectionChangedCommand。
我不知道,如果你是后是可能的,但我做的方式是简单地将绑定的SelectedItem对视图模型的属性。然后,属性setter内,我认为那是我希望发生的事情,即设置基于规则的其他属性的任何自定义代码。如果我需要所选择的项目被绑定到对象藏汉(对于其他绑定控件来更新)我也设置此在设定器和发送通知。
不隶属于 StackOverflow