使用Caliburn.Micro将操作绑定到嵌套的CheckBox

时间:2016-04-29 15:57:30

标签: c# wpf xaml mvvm caliburn.micro

我有一个包含ListView的MainView.xaml:

SELECT id, weight,
       CASE WHEN id = 7 THEN @weight := weight
            ELSE @weight
       END AS compare_weight
FROM `TABLE`
HAVING weight >= compare_weight
ORDER BY weight ASC

支持模型MainViewModel.cs包含用于填充List的ObservableCollection:

<ListView x:Name="Conditions"/>

呈现列表中每个项目的ConditionView.xaml只是一个带有一些文本的复选框:

private ObservableCollection<ConditionViewModel> _conditions = new ObservableCollection<ConditionViewModel>();
public ObservableCollection<ConditionViewModel> Conditions
{
    get { return _conditions; }
    set
    {
        _conditions= value;
        NotifyOfPropertyChange(() => Conditions);
    }
}

//QUESTION: How do I call this function when a checkbox inside the ListView is checked/unchecked?
public void ConditionStateChanged(ICondition condition)
{

}

支持列表中每个项目的ConditionViewModel.cs如下所示:

<StackPanel>
    <CheckBox x:Name="IsSelected"/>
    <TextBlock x:Name="Description"/>
</StackPanel>

这是我的问题。每当在ListView中检查或取消选中某个项目时,我需要在包含ListView的MainViewModel.cs中执行一些操作。你可以看到我想在上面调用的函数,它名为ConditionStateChanged()。我怎么能以'正确'(Caliburn.Micro)的方式做到这一点。

目前,我能想到的是,从ConditionViewModel中的IsSelected属性内部发布一个C#事件,然后在父MainViewModel中订阅该事件。从事件'sender'参数,我会知道哪个ICondition对象触发了它,我可以调用我想要的:ConditionStateChanged()函数。这是正确的方法吗?感谢。

0 个答案:

没有答案