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

C# 将两个属性绑定到==>;单一控制,c#,.net,wpf,binding,multibinding,C#,.net,Wpf,Binding,Multibinding,假设我有财产 FIrstName和LastName 我需要用singletextbox将其绑定 因此,在单个文本框中,我可以同时显示名和名 那怎么可能呢?第三个属性可能是全名 要获得更好的帮助,请问一个更好的问题(例如,您的类型是什么) 编辑:无论如何,我建议至少有两个文本框,这样您就可以安全地处理“多部分名称”,如上述卡尔·海因茨·施密特·梅耶·冯·诺伊恩豪森·祖巴德·雷钦霍尔。除了不那么模棱两可之外,这是web表单的一个实际标准 edit2:作为一个关于答案的注释,因为它可能会导致严重的数

假设我有财产

FIrstName
LastName

我需要用single
textbox
将其绑定

因此,在单个文本框中,我可以同时显示名和名


那怎么可能呢?

第三个属性可能是
全名

要获得更好的帮助,请问一个更好的问题(例如,您的类型是什么)

编辑:无论如何,我建议至少有两个文本框,这样您就可以安全地处理“多部分名称”,如上述
卡尔·海因茨·施密特·梅耶·冯·诺伊恩豪森·祖巴德·雷钦霍尔
。除了不那么模棱两可之外,这是web表单的一个实际标准


edit2:作为一个关于答案的注释,因为它可能会导致严重的数据库损坏,系统管理员、程序员(他们没有起点和线索知道应用程序失败的原因)的加班费,以及大量的资金。也就是说,如果这种令人毛骨悚然的腐败是在你的客户已经失去客户之前发现的

问题代码

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
    string[] strings = ((string)value).Split(' ');
    return strings;
}
我的问题是它将如何处理多部分名称。他回答说:“那么,你可以用一个。”。我的答复是:

您的代码不会处理这个问题,因为它不会处理少于两个名称组件的情况(您将得到一个
索引自动弗兰基异常
)。此外,您的代码不会处理多个或忘记的空格。对于每一个额外的空格,它都会生成一个单独的值标记,这可能会破坏数据库条目,导致数据不共享(因为您只读取前两个条目)。此外,如果用户没有忘记逗号或键入错误(例如使用分号或斜杠),则必须验证。所有这些问题随着分离到不同的领域而不再存在。用户输入是首要的安全和程序稳定性恐惧


第三个属性可能是全名

要获得更好的帮助,请问一个更好的问题(例如,您的类型是什么)

编辑:无论如何,我建议至少有两个文本框,这样您就可以安全地处理“多部分名称”,如上述
卡尔·海因茨·施密特·梅耶·冯·诺伊恩豪森·祖巴德·雷钦霍尔
。除了不那么模棱两可之外,这是web表单的一个实际标准


edit2:作为一个关于答案的注释,因为它可能会导致严重的数据库损坏,系统管理员、程序员(他们没有起点和线索知道应用程序失败的原因)的加班费,以及大量的资金。也就是说,如果这种令人毛骨悚然的腐败是在你的客户已经失去客户之前发现的

问题代码

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
    string[] strings = ((string)value).Split(' ');
    return strings;
}
我的问题是它将如何处理多部分名称。他回答说:“那么,你可以用一个。”。我的答复是:

您的代码不会处理这个问题,因为它不会处理少于两个名称组件的情况(您将得到一个
索引自动弗兰基异常
)。此外,您的代码不会处理多个或忘记的空格。对于每一个额外的空格,它都会生成一个单独的值标记,这可能会破坏数据库条目,导致数据不共享(因为您只读取前两个条目)。此外,如果用户没有忘记逗号或键入错误(例如使用分号或斜杠),则必须验证。所有这些问题随着分离到不同的领域而不再存在。用户输入是首要的安全和程序稳定性恐惧


您可以使用多重绑定来实现这一点
对于OnWay
绑定,请使用以下选项:

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


有关多绑定类的更多信息,请参阅

,您可以使用多绑定来实现这一点
对于OnWay
绑定,请使用以下选项:

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

有关多绑定类的更多信息,请查看

尝试:


尝试以下方法:



像这样的事情应该能让你接近。这不是用VS写的,所以我不确定它的语法是否正确。



像这样的事情应该能让你接近。这不是用VS写的,所以我不确定它在语法上是否正确。

为什么没有两个文本框,这是web表单上的事实标准?看到您已经看到了答案,我可以再问一下“为什么没有两个文本框,这是web表单上的事实标准?”;因为我真的怀疑在双向绑定的情况下,您的应用程序是否可以安全使用;多个名字很常见我们真的需要一个“无用的提问者”标签…@Pritesh:ping ping你还活着吗?@Pritesh:叹气你是一个无用的提问者,标签是stackoverflow的中心概念。你帮不上忙,因为我问了好几次一个问题,每次你都忽略了。如果你想让我们帮助你,你必须先帮助我们。为什么不两个文本框,因为这是web表单上的事实标准?看到你已经看到了答案,我可以再问一下“为什么不两个文本框,因为这是web表单上的事实标准?”;因为我真的怀疑在双向绑定的情况下,您的应用程序是否可以安全使用;多个名字很常见我们真的需要一个“无用的提问者”标签…@Pritesh:ping ping你还活着吗?@Pritesh:叹气你是一个无用的提问者,标签是stackoverflow的中心概念。你帮不上忙,因为我问了好几次一个问题,每次你都忽略了。如果你想让我们帮你,你必须先帮我们。哥们,我错过了“代码示例”按钮,所以它没有显示出来。。。我尽可能快地编辑了它,在一分钟内。。。好的,没问题……只是好奇,因为我经常看到这种情况发生在这里,让那些写作的人处于不利地位