如何解决如何判断ItemsControl数据模板中的项目是否最新?
| 我有一个绑定到ICollectionView的ItemsControl。 我需要从一个项目的DataTemplate判断出它是否是当前的。 注意:这可以从列表框中进行,但是我希望ItemsControl看起来像。解决方法
我会用MultiValueConverter做到这一点,它将数据模板化的项目与视图中的CurrentItem进行比较,例如
<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,CultureInfo culture)
{
throw new NotSupportedException();
}
#endregion
}
确保以某种方式实际更改当前项目,否则将毫无意义。 ItemsControl
中的ItemsSource
显然也必须是ICollectionView,但是您还是说是这样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。