在 WPF 中调用命令时从复选框获取选中属性
本文关键字:复选框 获取 属性 WPF 调用 命令 | 更新日期: 2023-09-27 18:37:25
我在 WPF C# 项目中有一个复选框网格。每个复选框的 Command
属性都绑定到我的 WView.xaml 文件中的CheckBoxChangedCommand
,如下所示:
<CheckBox Grid.Row="0" IsChecked="true" x:Name ="CheckBox0"
Command="{Binding CheckBoxChangedCommand}" />
<CheckBox Grid.Row="1" IsChecked="true" x:Name="CheckBox1"
Command="{Binding CheckBoxChangedCommand}" />
每次选中或取消选中其中一个复选框时,我都会调用CheckBoxChanged
。我将如何显示 1 的弹出窗口。复选框网格中的行号和复选框的名称(例如"CheckBox0")和 2。复选框的已检查值(真/假)?
我的 CheckBoxChangedCommand,在 WViewModel.cs 文件中,看起来像这样:
public ICommand CheckBoxChangedCommand
{
get
{
return new RelayCommand(param =>
{
MessageBox.Show("CheckBoxChanged!");
});
}
}
如何访问从CheckBoxChanged
中触发CheckBoxChanged
的复选框的 IsChecked
属性和行号?如何将数据从我的视图传递到我的视图模型?
您肯定需要在此处对绑定做更多操作。
首先,您可能应该将复选框的 IsChecked 属性绑定到视图模型上的属性。
其次,根据您关于需要知道选中的复选框的行号的评论,我认为您可能需要通过数据绑定生成包含复选框的"行",以便您可以将表示行的对象作为命令参数传递给您的 CheckBoxChangedCommand。
所以像这样:
<ListBox ItemsSource="{Binding MyItems}" />
然后在您的资源中:
<DataTemplate DataType="{x:Type local:MyItemType}">
<CheckBox IsChecked="{Binding IsChecked}"
Command="{Binding CheckChangedCommand}"
CommandParameter="{Binding}" />
</DataTemplate>
注意:您的CheckChangedCommand可能在主ViewModel上,而不是在项目级ViewModel上,因此您可能需要执行一些其他类型的查找才能找到它 - 此示例只是为了简单起见