Nếu bạn gặp vấn đề với ràng buộc để các giá trị null và PriorityBinding (như Shimmy chỉ ra), bạn có thể đi với MultiBinding và MultiValueConverter như thế:
public class PriorityMultiValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values.FirstOrDefault(o => o != null);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Cách sử dụng:
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource PriorityMultiValueConverter}">
<Binding Path="LastNameNull" />
<Binding Path="FirstName" />
</MultiBinding>
</TextBox.Text>
</TextBox>
Vấn đề là PriorityBinding coi chuỗi rỗng là một ràng buộc thành công – Shimmy
từ [MSDN] (https://msdn.microsoft.com/en-us/library/system.windows.data.prioritybinding%28v=vs.110 % 29.aspx): 'Giá trị DependencyProperty.UnsetValue không được coi là giá trị trả về thành công.' - vì vậy chỉ cần sử dụng một Trình chuyển đổi trên ràng buộc của bạn trả về thuộc tính đó nếu giá trị của bạn là null. @Shimmy –