que tienen dos clases con propiedades diferentes, pero ambos heredan alguna otra clase de base:¿Cómo manejar enlaces cuando el objeto fuente puede no tener la propiedad dada?
public class BaseClass { }
public class ClassA : BaseClass
{
public string PropertyA { get; set; }
}
public class ClassB : BaseClass
{
public string PropertyB { get; set; }
}
de código subyacente:
public ObservableCollection<BaseClass> Items { get; set; }
public MainWindow()
{
Items = new ObservableCollection<BaseClass>
{
new ClassA {PropertyA = "A"},
new ClassB {PropertyB = "B"}
};
}
Y mi XAML se parece a esto:
<ListView ItemsSource="{Binding Items}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding PropertyA, FallbackValue=''}"/>
<GridViewColumn DisplayMemberBinding="{Binding PropertyB, FallbackValue={x:Null}}"/>
</GridView>
</ListView.View>
</ListView>
Cuando se ejecuta en modo de depuración, la ventana de salida muestra esto:
System.Windows.Data Warning: 40 : BindingExpression path error: 'PropertyB' property not found on 'object' ''ClassA' (HashCode=66437409)'. BindingExpression:Path=PropertyB; DataItem='ClassA' (HashCode=66437409); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
System.Windows.Data Warning: 40 : BindingExpression path error: 'PropertyA' property not found on 'object' ''ClassB' (HashCode=2764078)'. BindingExpression:Path=PropertyA; DataItem='ClassB' (HashCode=2764078); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
¿Hay una forma mejor de manejar encuadernaciones como estas? ¿Hay alguna implicación en el rendimiento, y es mejor utilizar FallbackValue = '' o FallbackValue = {x: Null}?
enfrento exactamente el mismo problema y estoy ansioso por ver una buena solución a esa pregunta ! – SvenG