假设我有属性
FIrstName
和LastName
我需要将它与单个textbox
绑定。
因此,在单个文本框中,我可以同时显示FirstName
和LastName
。
那怎么可能呢?
您可以使用多绑定来实现这一点
对于OnWay绑定使用此:
<TextBox>
<TextBox.Text>
<MultiBinding StringFormat="{}{0} {1}" Mode="OneWay">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBox.Text>
</TextBox>
有关MutiBinding类的更多信息,请参阅此处
尝试多重绑定类:
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource myConverter}">
<Binding Path="FirstName" />
<Binding Path="LastName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
可能是第三个属性FullName
。
为了获得更好的帮助,请问一个更好的问题(例如,你的类型是什么)。
edit:无论如何,我建议至少有两个文本框,这样您就可以安全地处理"多部分名称",就像上面提到的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
)。此外,您的代码不会处理多个或被遗忘的空白。对于每一个额外的空白,它都会生成一个单独的值标记,这可能会破坏数据库条目并破坏数据(因为您只读取前两个条目)。此外,如果用户没有忘记逗号或键入错误,例如分号或斜线,则必须验证。所有这些问题随着分离成不同的领域而不复存在。用户输入是最令人担忧的安全和程序稳定性问题。
<TextBlock Name="textBox">
<TextBlock.Text>
<MultiBinding>
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
像这样的事情应该会让你接近。这不是在VS中写的,所以我不确定它在语法上是否正确。