将两个属性绑定到==>单一控制

时间:2011-06-14 11:27:36

标签: c# .net wpf binding multibinding

假设我有财产

FIrstNameLastName

我需要用单textbox绑定它。

因此,只需单个文本框,我就可以显示 FirstNameLastName

那怎么可能呢?

4 个答案:

答案 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)

试试MultiBinding Class

<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写的,所以我不确定它是否在语法上是正确的。