在导体

时间:2016-02-23 04:54:58

标签: wpf event-handling caliburn.micro

我们有一个指挥,两个屏幕交替显示。屏幕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添加事件订阅者。

你能帮忙告诉我如何避免这种情况吗?

0 个答案:

没有答案