Tôi có hai lớp với các thuộc tính khác nhau, nhưng cả hai thừa hưởng một số lớp cơ sở khác:Cách xử lý các ràng buộc khi đối tượng nguồn có thể không có thuộc tính đã cho?
public class BaseClass { }
public class ClassA : BaseClass
{
public string PropertyA { get; set; }
}
public class ClassB : BaseClass
{
public string PropertyB { get; set; }
}
Mã-đằng sau:
public ObservableCollection<BaseClass> Items { get; set; }
public MainWindow()
{
Items = new ObservableCollection<BaseClass>
{
new ClassA {PropertyA = "A"},
new ClassB {PropertyB = "B"}
};
}
Và XAML của tôi trông như thế này:
<ListView ItemsSource="{Binding Items}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding PropertyA, FallbackValue=''}"/>
<GridViewColumn DisplayMemberBinding="{Binding PropertyB, FallbackValue={x:Null}}"/>
</GridView>
</ListView.View>
</ListView>
Khi chạy trong chế độ gỡ lỗi, cửa sổ đầu ra hiển thị điều này:
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')
Có cách nào tốt hơn để xử lý các ràng buộc như thế này không? Có bất kỳ tác động nào về hiệu năng hay không và sử dụng FallbackValue = '' hoặc FallbackValue = {x: Null} có tốt hơn không?
tôi phải đối mặt với chính xác cùng một vấn đề và tôi mong muốn thấy một giải pháp tốt cho câu hỏi đó ! – SvenG