Edw*_*uay 31 wpf events mvvm attachedbehaviors
对于那些使用纯MVVM的人来说,如何在不回复代码的情况下处理ComboBox SelectionChanged事件?
我尝试了例如AttachedBehaviors,但不支持Event ="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>
Run Code Online (Sandbox Code Playgroud)
fab*_*ien 68
这篇文章很老了,但是因为我遇到了同样的问题.以下是我如何解决它(使用框架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>
Run Code Online (Sandbox Code Playgroud)
然后,您只需在viewmodel中实现SelectionChangedCommand.
HAd*_*des 26
我不确定你所追求的是否可能,但我这样做的方法是简单地将SelectedItem绑定到视图模型上的属性.然后在属性设置器中,我调用我想要发生的任何自定义代码,即根据规则设置其他属性.如果我需要将所选项绑定到对象以及(对于要更新的其他绑定控件),我也会在setter中设置它并发送通知.
您可以使用数据触发器来触发不同 UI 元素上的事件,例如“启用/禁用,或可见/不可见”
如果您希望所选元素显示其他 UI 元素中的对象数据,则可以使用数据绑定并将 UI 数据显示元素的数据上下文设置为绑定到组合框中当前选定的项目。
| 归档时间: |
|
| 查看次数: |
53587 次 |
| 最近记录: |