Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果一个值为null,则为多个绑定目标_C#_Wpf_Xaml_Binding - Fatal编程技术网

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)属性 使用绑定列表。返回值的第一个绑定 成功成为活动绑定

如果满足以下条件,绑定将成功返回值:

  • 绑定源的路径已成功解析

  • 值转换器(如果有)能够转换结果值

  • 结果值对目标属性有效

  • 值DependencyProperty.UnsetValue不被认为是成功的 返回值



    当属性值为
    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)属性 使用绑定列表。返回值的第一个绑定 成功成为活动绑定

    如果满足以下条件,绑定将成功返回值:

  • 绑定源的路径已成功解析

  • 值转换器(如果有)能够转换结果值

  • 结果值对目标属性有效

  • 值DependencyProperty.UnsetValue不被认为是成功的 返回值



    当属性值为
    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