XAML绑定字符串连接
-
18-09-2019 - |
题
我有一个对象Person
,其具有FirstName
和LastName
性质。
在我的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的方法是不实际的。
但是就像我说这一切都取决于你的应用程序的架构。
不隶属于 StackOverflow