取消选中“不工作”复选框
本文关键字:不工作 复选框 工作 取消 | 更新日期: 2023-09-27 18:21:36
我有一个复选框,当选中它和单击它取消选中它时,它应该起作用。选中时,应启用/确保其他复选框已选中,未选中时,其他复选框应取消选中。检查后工作正常。但如果不加以控制,什么也不会发生。所以我缺少了一些类似"onChange"属性的东西。
我的代码可能有什么问题
<CheckBox Content="Check all" Grid.Column="1" Grid.Row="1" Margin="200 7 0 0" Name="IsCheckedCheckAll" Checked="IsCheckedCheckAll_Checked"/>
if (IsCheckedCheckAll.IsChecked == true)
{
if (IsCheckedCheckAll.Content.Equals("Check all"))
{
IsCheckedCheckAll.Content = "Uncheck all";
Exc1.IsChecked = true;
Exc2.IsChecked = true;
Exc3.IsChecked = true;
Exc4.IsChecked = true;
Exc5.IsChecked = true;
}
}
else
{
if (IsCheckedCheckAll.IsChecked == false)
{
IsCheckedCheckAll.Content = "Check all";
Exc1.IsChecked = false;
Exc2.IsChecked = false;
Exc3.IsChecked = false;
Exc4.IsChecked = false;
Exc5.IsChecked = false;
}
}
您缺少未选中的事件处理程序。
所以将XAML更改为
<CheckBox Content="Check all" Grid.Column="1" Grid.Row="1" Margin="200 7 0 0" Name="IsCheckedCheckAll" Checked="IsCheckedCheckAll_Checked" Unchecked="IsCheckedCheckAll_Checked"/>
最好使用绑定来完成此操作。
1.从IsCheckedCheckAll复选框中删除事件处理程序(选中、未选中)
2.其他复选框可以通过使用绑定表达式IsChecked="{binding IsChecked,ElementName=IsCheckedCheckAll,Mode=OneWay}"绑定到IsCheckedCheck All的IsChecked属性
<CheckBox Content="Check all" Grid.Column="1" Grid.Row="1" Margin="200 7 0 0" Name="IsCheckedCheckAll" />
<CheckBox Content="Exc1" Name="Exc1" IsChecked="{Binding IsChecked, ElementName=IsCheckedCheckAll, Mode=OneWay}" />
通过绑定将内容更改为Checked All、Unchecked All的一种方法是将布尔IsChecked属性映射到某些字符串内容。您可以通过编写下面这样的值转换器来实现这一点。
namespace WpfApplication1
{
public class CheckedStatusToTextConverters : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool checkedStatus = (bool)value;
return checkedStatus ? "Uncheck All" : "Check All";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}
然后在XAML中,您可以使用类似的值转换器
<Window.Resources>
<mycode:CheckedStatusToTextConverters x:Key="MyConverter" />
</Window.Resources>
<Grid>
<CheckBox Content="{Binding IsChecked, Converter={StaticResource MyConverter}, RelativeSource={RelativeSource Self}}"/>