Mam niezwykle prosty IMultiValueConverter, który po prostu dwie wartości OR. W poniższym przykładzie chcę odwrócić pierwszą wartość przy użyciu równie prostego falownika binarnego.Dlaczego otrzymuję wartość DependencyProperty.UnsetValue podczas przekształcania wartości w MultiBinding?
<MultiBinding Converter="{StaticResource multiBoolToVis}">
<Binding Path="ConditionA" Converter="{StaticResource boolInverter}"/>
<Binding Path="ConditionB"/>
</MultiBinding>
i falownik:
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
}
Kiedy obejmują boolInverter, pierwsza wartość w MultiValueConverter staje się "DependencyProperty.UnsetValue". Nie ma problemów, gdy nie używam konwertera (oczywiście inaczej niż logika, do której dążę).
Czy brakuje mi czegoś? Przechodzenie przez debugger pokazuje, że InverseBoolConverter poprawnie odwraca wartość, którą przekazuję, ale ta wartość nie jest następnie wysyłana do MultiValueConverter.
zobacz ten: http://stackoverflow.com/questions/683863/items-collection-must-be-empty-before-using-itemssource – mkb