我们有一个指挥,两个屏幕交替显示。屏幕1具有DataGrid
,它使用ActionMessage为SelectionChanged
事件附加了ViewModel中的方法。屏幕2具有非常基本的UI。我们通过在某些事件上设置指挥的ActiveItem属性来更改屏幕。屏幕1是导体的默认值,它在负载下工作正常。
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cal:ActionMessage MethodName="test_SelectionChanged" >
<cal:Parameter Value="{Binding ElementName=grdTest, Mode=OneTime}">
</cal:Parameter>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
在ViewModel中:
public void test_SelectionChanged(object param) { //code }
问题是,在更改屏幕后,DataGrid的SelectionChanged
被称为多次(如果我将viewmodel设置为ActiveItem三次,则为3次)。在我看来,只要屏幕1的viewmodel设置为ActiveItem,就会为SelectionChanged添加事件订阅者。
你能帮忙告诉我如何避免这种情况吗?