根据条件检查复选框 - WPF

时间:2012-11-20 14:22:17

标签: wpf silverlight

我从数据库中获取复选框的数据。

<stackPanel Name="StudentDetails">
  <checkBox Name="Left" Content="(M)" Unchecked="CheckBoxUnChecked" Checked="CheckBoxChecked" />
  <checkBox Name="Left" Content="(F)" Unchecked="CheckBoxUnChecked" Checked="CheckBoxChecked" />
  <Label Content="{Binding Path=Student.Name}" />
</stackPanel>

如果我选中内容=(M)且标签内容=“Sam”的复选框,我想检查内容=(F)并且标签内容=“露西”的其他复选框。

您能为我提供示例代码吗?

由于

1 个答案:

答案 0 :(得分:0)

复选框名称不应相同。

您需要绑定和IValueConverter:

<stackPanel Name="StudentDetails">
  <checkBox Name="Left" 
            Content="(M)" 
            IsChecked="{Binding Student.Name, Converter={StaticResource StudentCheckedConverter}, ConverterParameter="M"}" />
  <checkBox Name="Left" 
            Content="(F)" 
            IsChecked="{Binding Student.Name, Converter={StaticResource StudentCheckedConverter}, ConverterParameter="F"}" />
  <Label Content="{Binding Student.Name}" />
</stackPanel>

IValueConverter看起来像:

public class StudentCheckedConverter : IValueConverter
{
   public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if ("M".Equals(parameter))
                return "Sam".Equals(value);
            if ("F".Equals(parameter))
                return "Lucie".Equals(value);
            throw new Exception("Unknown parameter or value");
        } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
}

另外,你需要在XAML的资源中公开StudentCheckedConverter,但我觉得有点谷歌搜索会对你有所帮助。