ICollectionViewにバインドするItemsControlがあります。
アイテムのDataTemplateを使用して、それが現在のものであるかどうかを確認する必要があります。
注:これはリストボックスから可能ですが、ItemsControlの外観が必要です。
ICollectionViewにバインドするItemsControlがあります。
アイテムのDataTemplateを使用して、それが現在のものであるかどうかを確認する必要があります。
注:これはリストボックスから可能ですが、ItemsControlの外観が必要です。
これは、データテンプレートアイテムをビュー内のCurrentItemと比較するMultiValueConverterを使用して行います。
<local:EqualityComparisonConverter x:Key="EqualityComparisonConverter"/>
<DataTemplate DataType="{x:Type local:Employee}">
<StackPanel Orientation="Horizontal">
<CheckBox IsEnabled="False">
<CheckBox.IsChecked>
<MultiBinding Converter="{StaticResource EqualityComparisonConverter}" Mode="OneWay">
<Binding RelativeSource="{RelativeSource AncestorType=ItemsControl}"
Path="ItemsSource.CurrentItem"/>
<Binding />
</MultiBinding>
</CheckBox.IsChecked>
</CheckBox>
...
コンバーター:
public class EqualityComparisonConverter : IMultiValueConverter
{
#region IMultiValueConverter Members
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values.Length < 2) throw new Exception("At least two inputs are needed for comparison");
bool output = values.Aggregate(true, (acc, x) => acc && x.Equals(values[0]));
return output;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
#endregion
}
実際に現在のアイテムを何らかの方法で変更するようにしてください。そうしないと、まったく意味がありません。また、ItemsSource
明らかItemsControl
にICollectionViewである必要がありますが、とにかくそうだとおっしゃいました。