Tôi có một IMultiValueConverter cực kỳ đơn giản chỉ đơn giản là hai giá trị của OR. Trong ví dụ dưới đây, tôi muốn đảo ngược giá trị đầu tiên bằng cách sử dụng một biến tần boolean đơn giản.Tại sao tôi nhận được DependencyProperty.UnsetValue khi chuyển đổi giá trị trong MultiBinding?
<MultiBinding Converter="{StaticResource multiBoolToVis}">
<Binding Path="ConditionA" Converter="{StaticResource boolInverter}"/>
<Binding Path="ConditionB"/>
</MultiBinding>
và biến tần:
public class BoolInverterConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is bool)
{
return !((bool)value);
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Khi tôi bao gồm các boolInverter, giá trị đầu tiên trong MultiValueConverter trở thành một "DependencyProperty.UnsetValue". Không có vấn đề gì khi tôi không sử dụng bộ chuyển đổi (không phải là logic mà tôi đang hướng tới, tất nhiên).
Tôi có thiếu gì đó không? Bước qua trình gỡ lỗi cho thấy rằng InverseBoolConverter đã đảo ngược giá trị mà tôi truyền nó, nhưng giá trị đó không được 'gửi' tới MultiValueConverter.
xem thông báo này: http://stackoverflow.com/questions/683863/items-collection-must-be-empty-before-using-itemssource – mkb