我有一個從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