C# 如果一个值为null,则为多个绑定目标
我想将C# 如果一个值为null,则为多个绑定目标,c#,wpf,xaml,binding,C#,Wpf,Xaml,Binding,我想将Textblock.Text绑定到我已经完成的类属性,但是当该值为null时,我希望使用一个新属性,如果该属性为null,则设置一个默认值。我以为这就是PriorityBinding的作用 <TextBlock.Text> <PriorityBinding> <Binding Path="Property1"/> <Binding Path="Property2"/>
Textblock.Text
绑定到我已经完成的类属性,但是当该值为null时,我希望使用一个新属性,如果该属性为null,则设置一个默认值。我以为这就是PriorityBinding的作用
<TextBlock.Text>
<PriorityBinding>
<Binding Path="Property1"/>
<Binding Path="Property2"/>
<Binding Source="---"/>
</PriorityBinding>
</TextBlock.Text>
null
是Textblock.Text
属性的有效值,因此它永远不会使用任何其他绑定
发件人:
PriorityBinding允许您关联绑定目标(target)属性
使用绑定列表。返回值的第一个绑定
成功成为活动绑定
如果满足以下条件,绑定将成功返回值:
当属性值为
null
时,可以添加一个返回dependencProperty.UnsetValue
的绑定转换器:
public class NullValueConverter : IValueConverter
{
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
return value ?? DependencyProperty.UnsetValue;
}
...
}
null
是Textblock.Text
属性的有效值,因此它永远不会使用任何其他绑定
发件人:
PriorityBinding允许您关联绑定目标(target)属性
使用绑定列表。返回值的第一个绑定
成功成为活动绑定
如果满足以下条件,绑定将成功返回值:
当属性值为
null
时,可以添加一个返回dependencProperty.UnsetValue
的绑定转换器:
public class NullValueConverter : IValueConverter
{
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
return value ?? DependencyProperty.UnsetValue;
}
...
}
引发异常将导致属性无法解析,从而允许
PriorityBind
ing筛选到下一个绑定。引发异常将导致属性无法解析,因此,允许PriorityBind
ing过滤到下一个绑定。dependencProperty.UnsetValue
是无法从字符串属性返回的内容,而字符串属性正是我们通常用于Text
属性的绑定类型。@SriramSakthivel是正确的DependencyProperty.UnsetValue
是一个对象,它不是字符串的有效返回类型。所以问题仍然存在。我想“正确”的方法是使用绑定转换器。请看我的编辑。是的,转换器是一种方法。我正要写信回答。不,没有必要像你已经拥有的那样去做。我会把它写成返回值??DependencyProperty.Value
DependencyProperty.UnsetValue
是不能从字符串属性返回的内容,而字符串属性正是我们通常用于文本
属性的绑定类型。@SriramSakthivel是正确的DependencyProperty.UnsetValue
是一个对象,它不是字符串的有效返回类型。所以问题仍然存在。我想“正确”的方法是使用绑定转换器。请看我的编辑。是的,转换器是一种方法。我正要写信回答。不,没有必要像你已经拥有的那样去做。我会把它写成返回值??DependencyProperty.Value代码>来自MSDN上的文章:不要为正常的控制流使用异常…来自MSDN上的文章:不要为正常的控制流使用异常…这只是一个建议,我没有尝试过它是否有效,但您可以尝试使用样式和触发器,因此如果Property1 value=null,则使用setter,将文本绑定设置为property2这只是一个建议,我还没有尝试过它是否有效,但您可以尝试使用样式和触发器,因此如果Property1 value=null,则使用setter,将文本绑定设置为property2