我有一个对象Person,其具有FirstNameLastName性质。

在我的WPF UI,我有需要绑定到的全名一个Label

<Label Binding="{Binding FullName}" />

我不想再创建一个只读属性,如:

public string FullName { get { return FirstName + " " + LastName; } }

如何在XAML串联这两个属性?

有帮助吗?

解决方案

几个选项:

选项1:单的TextBlock(或标签)与MultiBinding:

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0} {1}">
            <Binding Path="FirstName" />
            <Binding Path="LastName" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

选项2:在水平的StackPanel多的TextBlocks(或标签):

<StackPanel Orientation="Horizontal">
    <TextBlock Text="{Binding FirstName}" />
    <TextBlock Text=" " />
    <TextBlock Text="{Binding LastName}" />
</StackPanel>

我个人会去使用选项1。

其他提示

我爱MultiBinding方法马特说明。不过,我也应该注意,根据您的应用程序创建你不想创建FullName属性的架构是一个同样有效(而且可能更理想)的选择。

如果您正在使用模型 - 视图 - 视图模型,你将有一个视图模型那样会暴露一个FullName属性为它绑定到视图的唯一目的。

例如,如果需求突然改变,这样你需要能够格式化为第一+最后或最后,首先取决于配置设置它会更容易对视图模型做。同样地,写入一个单元测试,以验证一个变化到姓或姓氏也导致全名适当变更使用直XAML的方法是不实际的。

但是就像我说这一切都取决于你的应用程序的架构。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top