1

假设我有财产

FIrstNameLastName

我需要用 single 绑定它textbox

所以在一个文本框中,我可以同时 FirstName显示和LastName

那怎么可能呢?

4

4 回答 4

3

您可以使用多重绑定来做到这一点
对于OnWay绑定使用这个:

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

有关 MutiBinding 类的更多信息,请查看此处

于 2011-06-14T11:31:10.200 回答
2

Try the MultiBinding Class :

<TextBlock>
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource myConverter}">
      <Binding Path="FirstName" />
      <Binding Path="LastName" />
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>
于 2011-06-14T11:33:15.723 回答
2

第三个属性FullName,也许。

如需更好的帮助,请提出更好的问题(例如,您的类型是什么)。

编辑:无论如何,我建议至少有两个文本框,这样你就可以安全地处理“多部分名称”,就像上面提到的那样Karl Heinz Schmidt-Meyer von Neuenhausen zu Bad-Reichenhall。除了不那么模棱两可之外,这是网络表单的事实上的标准。


编辑2:作为关于Navid Rahmani答案的注释,因为它打开了真正严重的数据库损坏的可能性,系统管理员加班费,程序员,他们没有起点和线索来解释他们的应用程序失败的原因,以及大量钱。也就是说,如果在您的客户已经失去客户之前发现了这种令人毛骨悚然的腐败。

有问题的代码

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
    string[] strings = ((string)value).Split(' ');
    return strings;
}

我的问题是它将如何处理多部分名称。他回答说可以用“,”。我的回复:

您的代码无法处理此问题,因为它无法处理少于两个名称组件的情况(您将得到一个IndexOutOfRangeException)。此外,您的代码不会处理多个或被遗忘的空格。对于每一个额外的空白,它都会产生一个单独的值标记,可能会用消失的数据破坏数据库条目(因为您只读取前两个条目)。此外,您必须验证用户是否忘记了逗号或输入错误,例如使用分号或斜线。随着分离到不同的领域,所有这些问题都不再存在。用户输入是第一大安全性和程序稳定性问题。

于 2011-06-14T11:29:52.983 回答
1
<TextBlock Name="textBox">
  <TextBlock.Text>
    <MultiBinding>
      <Binding Path="FirstName"/>
      <Binding Path="LastName"/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

Something like this should get you close. This was not written in VS so I'm not sure if it's syntactically correct.

于 2011-06-14T11:36:11.907 回答