我正在使用Caliburn.Micro编写一个WPF应用程序。我想根据带有复选框的列表框中的选中项来更新名称列表。
XAML:
<ListBox ItemsSource="{Binding Names}">
<ListBox.ItemTemplate>
<HierarchicalDataTemplate>
<CheckBox Content="{Binding Value}" IsChecked="{Binding IsChecked}" />
</HierarchicalDataTemplate>
</ListBox.ItemTemplate>
</ListBox>
IsChecked绑定可以工作,所以我可以运行一个方法来验证哪些元素已经被检查并更新名称列表。我的第一种方法是将命令绑定到checkbox Click事件或选中/取消选中,但我无法使其工作……
<CheckBox Content="{Binding Value}" IsChecked="{Binding IsChecked}" Click="{Binding UpdateNameList}" />
在我的ViewModel中:
public void UpdateNameList()
{
// update list...
}
我在运行时得到以下错误:
error Unable to cast object of type 'System.Reflection.RuntimeEventInfo' to type 'System.Reflection.MethodInfo'.
如何使用Caliburn.Micro绑定到复选框单击事件?或者我应该用另一种方式来做这件事?
谢谢
发布于 2020-04-30 21:58:51
使用Action.TargetWithoutContext
attached属性将Action.Target绑定到父视图模型,并使用Message.Attach
挂接该方法。这应该是可行的:
<CheckBox Content="{Binding Value}" IsChecked="{Binding IsChecked}"
cal:Action.TargetWithoutContext="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ListBox}}"
cal:Message.Attach="UpdateNameList()" />
https://stackoverflow.com/questions/61524566
复制相似问题