首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >绑定到第二个属性,如果第一个属性是“未定义的”

绑定到第二个属性,如果第一个属性是“未定义的”
EN

Stack Overflow用户
提问于 2011-11-23 22:16:11
回答 4查看 1.6K关注 0票数 8

我不会复制/粘贴整个xaml文件。要解释它可能太长了,但有趣的是:我得到了一个属性"Name“的绑定

代码语言:javascript
复制
<TextBlock Text="{Binding Name}"/>

问题是,有时候,我的项目没有"Name“属性。它不会崩溃,但我的TextBlock中只有一个空文本

如果Name为空,我要做的就是绑定到"nothing",只绑定{Binding}。这将显示我的对象名称,它将是完美的!

提前感谢你的帮助,如果这是noobie的问题,我很抱歉:(

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-23 22:28:58

这里您需要的是一个PriorityBinding

特别是,它看起来像这样(确切的语法可能需要一些验证):

代码语言:javascript
复制
         <TextBlock>
            <TextBlock.Text>
                <PriorityBinding>
                    <Binding Path="Name"/>
                    <Binding />
                </PriorityBinding>
            </TextBlock.Text>
         </TextBlock>

请注意,当Name属性在被绑定的对象上不可用时,它会特别后退;如果Name属性有一个空字符串值,我相信它仍然会使用该空值。

票数 7
EN

Stack Overflow用户

发布于 2011-11-23 22:24:59

您可以使用DataTrigger应用样式

代码语言:javascript
复制
<TextBlock>
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="Text" Value="{Binding Name}"/>
            <Style.Triggers>
                <!-- In this binding you could inject a converter which checks for more than null -->
                <DataTrigger Binding="{Binding Name}" Value="{x:Null}">
                     <Setter Property="Text" Value="{Binding}"/>
                </DataTrigger>
            <Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>
票数 3
EN

Stack Overflow用户

发布于 2011-11-23 22:21:35

如果您不必绑定到对象类型名称,则可以使用TargetNullValue,如果绑定的属性为null,它将为您提供默认值,如下所示:

代码语言:javascript
复制
<TextBlock Text="{Binding Name, TargetNullValue=Default}" />

如果你真的想要对象类型的名字,我建议你写一个转换器(实现IValueConverter)。如果你想要一个样本转换器,请让我知道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8243652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档