首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >绑定到WPF MVVM中的CheckBox单击事件

绑定到WPF MVVM中的CheckBox单击事件
EN

Stack Overflow用户
提问于 2020-04-30 21:30:00
回答 1查看 656关注 0票数 0

我正在使用Caliburn.Micro编写一个WPF应用程序。我想根据带有复选框的列表框中的选中项来更新名称列表。

XAML:

代码语言:javascript
复制
<ListBox ItemsSource="{Binding Names}">
    <ListBox.ItemTemplate>
        <HierarchicalDataTemplate>
            <CheckBox Content="{Binding Value}" IsChecked="{Binding IsChecked}" />
        </HierarchicalDataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

IsChecked绑定可以工作,所以我可以运行一个方法来验证哪些元素已经被检查并更新名称列表。我的第一种方法是将命令绑定到checkbox Click事件或选中/取消选中,但我无法使其工作……

代码语言:javascript
复制
<CheckBox Content="{Binding Value}" IsChecked="{Binding IsChecked}" Click="{Binding UpdateNameList}" />

在我的ViewModel中:

代码语言:javascript
复制
public void UpdateNameList()
{
    // update list...
}

我在运行时得到以下错误:

代码语言:javascript
复制
error Unable to cast object of type 'System.Reflection.RuntimeEventInfo' to type 'System.Reflection.MethodInfo'.

如何使用Caliburn.Micro绑定到复选框单击事件?或者我应该用另一种方式来做这件事?

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2020-04-30 21:58:51

使用Action.TargetWithoutContext attached属性将Action.Target绑定到父视图模型,并使用Message.Attach挂接该方法。这应该是可行的:

代码语言:javascript
复制
<CheckBox Content="{Binding Value}" IsChecked="{Binding IsChecked}"
        cal:Action.TargetWithoutContext="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ListBox}}"
        cal:Message.Attach="UpdateNameList()" />
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61524566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档