-3

データベースからチェックボックスのデータを取得しています。

<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>

content =(M)でLabel content = "Sam"のチェックボックスを選択した場合、content =(F)でLabel content="Lucie"のチェックボックスをオンにします。

このためのサンプルコードを教えていただけますか?

ありがとう

4

1 に答える 1

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 を公開する必要がありますが、ちょっとしたグーグル検索でうまくいくと思います。

于 2012-11-20T14:39:43.757 に答える