次のアイテムデータクラスとコンバーターがあります。
class ListBoxViewItem
{
public String Name { get; set; }
public Boolean IsChecked { get; set; }
}
[ValueConversion(typeof(List<String>),typeof(List<ListBoxViewItem>))]
class ListToItemConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null) return null;
IEnumerable<String> l = value as IEnumerable<String>;
return (from n in l select new ListBoxViewItem() { IsChecked = true, Name = n });
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
class ListBoxData
{
public List<String> AllData
{
get
{
return new List<string>()
{
"FOO",
"BAR"
};
}
set
{
}
}
}
ListBoxData
のインスタンスをリストボックスコントロールのにバインドしますItemsSource
。以下のように:
<ListBox>
<ListBox.ItemsSource>
<Binding>
<Binding.Path>AllData</Binding.Path>
<Binding.Converter>
<local:ListToItemConverter />
</Binding.Converter>
<Binding.Mode>TwoWay</Binding.Mode>
</Binding>
</ListBox.ItemsSource>
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}"
Content="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
だから私の質問は、Convert
リストボックスが表示されているときに関数が呼び出されるということですが、このリストボックスのすべての項目はチェックボックスであるため、TwoWay
バインディングを使用してインスタンスとリストボックスをバインドしますがConvertBack
、のチェックボックスをオン/オフにすると呼び出されませんこのリストボックス。
ConvertBack
期待どおりに動作するように設計されているかどうかはわかりません。ConvertBack
しかし、チェックステータスが変更されたときにをトリガーできるようにしたい場合はどうすればよいですか?