数据上下文类:
class ImageHandler : INotifyPropertyChanged
{
bool[] directions = new bool[8];
public bool[] Directions { get { return directions; } }
// ...
}
XAML:
<UniformGrid Columns="8">
<CheckBox Content=" N" IsChecked="{Binding Path=Directions[0]}" Click="CheckBox_Click"/>
<CheckBox Content="NW" IsChecked="{Binding Path=Directions[1]}" Click="CheckBox_Click"/>
<CheckBox Content=" W" IsChecked="{Binding Path=Directions[2]}" Click="CheckBox_Click"/>
<!-- ... -->
</UniformGrid>
后面的代码:
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
imageHandler.UpdateImage();
}
所以,我在数据上下文类中有 bool 数组,还有 8 个复选框,绑定(bind)到每个数组成员。 Click 事件处理程序根据新的
directions
重新计算图像数组状态。如何更改此代码以删除 CheckBox_Click
事件处理程序,使其根据 MVVM 模式工作?我需要一种方法来检测 directions
中所做的更改数组,无需编写事件处理程序。
最佳答案
然后 WPF 复选框具有 Command 属性,您可以将其绑定(bind)到 View 模型中的 ICommand(使用 RelayCommand),还可以传递参数以查看更新了哪个复选框(在您的情况下为绑定(bind)项)。
我的另一个建议是也更改 XAML,如果您确定您的 View 模型将决定您的 UniformGrid 中显示的内容,即如果它始终呈现来自 View 模型的数据,那么您还可以在 UniformGrid 中定义 ItemsControl,然后为 ItemTemplate 定义一个模板这样您也不需要将复选框与 XAML 中定义的索引绑定(bind),以后也不需要维护它
关于c# - 如何删除绑定(bind)到 bool [] 数组的复选框的 Click 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18298143/