我有一个从CollectionViewGroup动态构建的ControlTemplate。WPF绑定Visiblity到集合属性
我希望它的可见性只有在所有项目的某个属性设置为true时才为真。我有所通过完成此:
XAML
<Button Visibility="{Binding Path=Items, Converter={StaticResource AllAcceptedToVis}}" Click="Button_ShipmentComplete_Click" Width="150" Margin="100,0,0,0">Complete</Button>
C#
public class AllAcceptedToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var items = (IEnumerable<object>)value;
return items.Cast<MyObject>().All(m => m.Accepted) ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new InvalidOperationException("AllAcceptedToVisibilityConverter can only be used OneWay.");
}
}
这个工作,但是当它加载只。它不检查初始创建后的更改,我怀疑是因为它绑定到地址列表(项目)而不是属性,所以它实际上检测到地址列表中没有任何更改(它们保持不变)。
我该如何完成上述操作,但是让绑定动态监视所有的项目属性更改?
@KingKing对他不会有任何好处;该绑定是针对**收集实例**的,所以只有当'Items'设置为新集合时才会调用转换器。如果集合发生更改,或者集合中的项目的某些属性发生更改,则绑定引擎不知道它应该重新评估绑定。 – 2014-10-10 18:02:25