我有一个复选框,当它被选中时以及单击它取消选中时应该起作用。选中它时,应启用/确保选中其他复选框,如果未选中,则应取消选中其他复选框。 选中它时工作正常。但是当它没有被检查时,没有任何反应。所以我错过了像“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;
}
}
答案 0 :(得分:3)
您缺少未经检查的事件处理程序。
所以将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 checbox中删除事件处理程序(Checked,Unchecked)
2.其他复选框可以使用绑定表达式绑定到IsCheckedCheckAll的IsChecked属性IsChecked =“{Binding IsChecked,ElementName = IsCheckedCheckAll,Mode = OneWay}”
<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的一种方法是,通过绑定取消选中是将布尔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中你可以像这样使用Value Converter
<Window.Resources>
<mycode:CheckedStatusToTextConverters x:Key="MyConverter" />
</Window.Resources>
<Grid>
<CheckBox Content="{Binding IsChecked, Converter={StaticResource MyConverter}, RelativeSource={RelativeSource Self}}"/>