C# WPF文本框单独的验证源

C# WPF文本框单独的验证源,c#,wpf,data-binding,validation,C#,Wpf,Data Binding,Validation,我正试图找到一种解决方案,让文本框显示并验证来自两个不同来源的数据,如以下小示例所示: <TextBox Text="{Binding Port.Name}" ValidationSource="{Binding Ship.PortFK}"/> 因此TextBox.Text绑定应该显示Port.Name而不进行验证。验证应在Ship.PortFK上完成,它将显示是否已将端口设置为船舶 --编辑2-- 该表单是用于编辑船舶数据的CRUD表单。 文本框是选择器控件的一部分,该控件由显

我正试图找到一种解决方案,让文本框显示并验证来自两个不同来源的数据,如以下小示例所示:

<TextBox Text="{Binding Port.Name}" 
ValidationSource="{Binding Ship.PortFK}"/>
因此TextBox.Text绑定应该显示Port.Name而不进行验证。验证应在Ship.PortFK上完成,它将显示是否已将端口设置为船舶

--编辑2--

该表单是用于编辑船舶数据的CRUD表单。 文本框是选择器控件的一部分,该控件由显示Port.Name的文本框和用于选择特定端口的按钮组成

验证应表明是否为船舶选择了港口。为此,将在Ship.PortFK上使用NotNullValidator,如果尚未设置PortFK值,则将启动验证程序,并警告用户选择端口

因此,用户可以为船舶选择一个特定的港口,然后文本框将显示Port.Name。
由于数据模型定义了一个端口是船舶必须的,文本框的验证应该向用户指示是否已经为船舶选择了一个端口。

您可以使用多重绑定吗?多重绑定允许您将多个值转换为单个值

<TextBox.ValidationSource>
  <MultiBinding Converter="{StaticResource multiValueConverter}">
    <Binding Path="Ship.Prop1" />
    <Binding Path="Ship.Prop2" />
  </MultiBinding>
</TextBox.ValidationSource>

上面,Ship的两个属性被传递给名为multiValueConverter的IMultiValueConverter(您需要实现自己的转换器)

您的IMultiValueConverter实现应该将这两个属性的值转换为单个值,该值可以被您绑定到的任何对象使用-据我所知,这是无法绕过的-但该单个值可以是对象[]


如果这没有帮助,也许你可以向我们提供更多的源代码和绑定到的对象的结构?

谢谢你的回答,但这不是我的意思,我已经在我的顶部帖子中添加了关于我的问题的更多信息。我想我现在理解得更好了-你想将文本框的文本绑定到Port.Name,但是您希望为使用Ship.PortFK的绑定提供ValidationRule。您能否解释一下,给定一个端口对象,您将如何验证它?您是否正在检查港口是否已分配船舶?另外,您希望用户如何与应用程序交互-这里的用例是什么?我不能百分之百肯定我能帮上忙,但我会尽力……这确实是一个挑战性的问题;)我有点惊讶,这么少人有这个问题,我几乎找不到类似的应用程序像这样。。。我在顶部的帖子中添加了更多的信息,描述了此控件和验证的使用。
<TextBox.ValidationSource>
  <MultiBinding Converter="{StaticResource multiValueConverter}">
    <Binding Path="Ship.Prop1" />
    <Binding Path="Ship.Prop2" />
  </MultiBinding>
</TextBox.ValidationSource>