2010-07-14 4 views
6

Tengo un PriorityBinding¿Cómo puedo hacer que un PriorityBinding falle si el valor devuelto es nulo?

<PriorityBinding FallbackValue="Bindings were null"> 
    <Binding Path="Foo" /> 
    <Binding Path="Bar" /> 
</PriorityBinding> 

me gustaría que así sea si Foo es nulo se utilizará bar y si ambos son nulos se utilizará el FallbackValue. Sin embargo, nulo es un valor válido para esta propiedad porque solo espera un objeto.

¿Hay alguna manera de hacer que PriorityBinding avance al siguiente enlace cuando el valor sea nulo? Preferiría hacerlo en XAML, pero si no puedo, solo haré un convertidor para eso.

Editar

acabé escribiendo un convertidor para que

public class NullToDependencyPropertyUnsetConverter 
    : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value ?? DependencyProperty.UnsetValue; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

Mira esto: http://stackoverflow.com/questions/6947728/equiv-to-coalesce-in-xaml-binding –

+0

Me preguntaba acerca de este tipo de cosas. Mis objetos tienen muchas propiedades que no son nulas, así que cuando intento usar PriorityBinding, termino obteniendo valores en blanco en lugar del siguiente en la lista. – Patrick

Respuesta

5

me gustaría ir con la valueconverter regresar UnsetValue si el valor límite es nulo.

PriorityBindings son más útiles si desea compartir una plantilla de datos entre diferentes tipos de objetos.

Cuestiones relacionadas