2010-07-14 28 views
6

Tôi có một PriorityBindingLàm cách nào để tạo một PriorityBinding nếu giá trị trả về là Null?

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

Tôi muốn làm cho nó vì vậy nếu Foo là null nó sẽ sử dụng Bar và nếu cả hai đều là null nó sẽ sử dụng FallbackValue. Tuy nhiên null là một giá trị hợp lệ cho thuộc tính này bởi vì nó chỉ mong đợi một đối tượng.

Có cách nào để làm cho PriorityBinding tiến tới ràng buộc tiếp theo khi giá trị rỗng không? Tôi muốn làm điều đó trong XAML, nhưng nếu tôi không thể, tôi sẽ tạo một công cụ chuyển đổi cho nó.

Sửa

tôi đã kết thúc chỉ cần viết một chuyển đổi cho nó

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

Nhìn vào điều này: http://stackoverflow.com/questions/6947728/equiv-to-coalesce-in-xaml-binding –

+0

Tôi đã tự hỏi về loại điều này. Đối tượng của tôi có rất nhiều thuộc tính không null, vì vậy khi tôi cố gắng sử dụng PriorityBinding, tôi sẽ nhận được các giá trị trống thay vì giá trị trống bên cạnh danh sách. – Patrick

Trả lời

5

Tôi muốn đi với ValueConverter trở UnsetValue nếu giá trị ràng buộc là null.

Ưu tiênCác kết nối hữu ích hơn nếu bạn muốn chia sẻ một bảng dữ liệu giữa các loại đối tượng khác nhau.

Các vấn đề liên quan