假设我有财产
FIrstName
和LastName
我需要用单textbox
绑定它。
因此,只需单个文本框,我就可以显示 FirstName
和LastName
。
那怎么可能呢?
答案 0 :(得分:3)
您可以使用多重绑定来执行此操作
对于 OnWay 绑定,请使用:
<TextBox>
<TextBox.Text>
<MultiBinding StringFormat="{}{0} {1}" Mode="OneWay">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBox.Text>
</TextBox>
有关MutiBinding类的更多信息,请查看here
答案 1 :(得分:2)
第三个属性FullName
,也许。
为了获得更好的帮助,请提出更好的问题(例如,您的类型是什么)。
编辑:无论如何,我建议至少有两个文本框,这样你就可以安全地处理“多部分名称”,就像上面提到的Karl Heinz Schmidt-Meyer von Neuenhausen zu Bad-Reichenhall
一样。除了不那么含糊之外,这是网络表格上的事实标准。
edit2:作为关于Navid Rahmani答案的说明,因为它开辟了真正严重的数据库损坏的可能性,系统管理员,程序员的成本超时,他们没有起点和线索为什么他们的申请失败了,还有很多钱。也就是说,如果在您的客户已经失去客户之前发现这种令人毛骨悚然的腐败。
有问题的代码
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
string[] strings = ((string)value).Split(' ');
return strings;
}
我的问题是如何处理多部分名称。他回答说可以使用“,”然后。我的回复:
您的代码无法处理此问题,因为它不会处理少于两个名称组件的情况(您将获得
IndexOutOfRangeException
)。此外,您的代码不处理多个或遗忘的空格。对于每个额外的空格,它会产生一个单独的值标记,可能破坏数据库条目,带有消失的数据(因为您只读取前两个条目)。此外,您必须验证,如果,则用户不会忘记逗号或输入错误,例如用分号或斜线。所有这些问题都不复存在,分离成不同的领域。用户输入是头号安全和程序稳定性的恐惧。
答案 2 :(得分:2)
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource myConverter}">
<Binding Path="FirstName" />
<Binding Path="LastName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
答案 3 :(得分:1)
<TextBlock Name="textBox">
<TextBlock.Text>
<MultiBinding>
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
这样的事可以让你接近。这不是用VS写的,所以我不确定它是否在语法上是正确的。