[英]WPF TextBox separate Validation source
我正在嘗試找到一種解決方案,以使TextBox顯示和驗證來自兩個不同來源的數據,如以下小示例所示:
<TextBox Text="{Binding Port.Name}"
ValidationSource="{Binding Ship.PortFK}"/>
這里的Ship數據對象包含一個用作端口外鍵的屬性,該屬性具有其自己的驗證器。
我已經探索了下面鏈接的ValidationRules的用法,但這只為我提供了PortFK的值,而我需要該屬性及其驗證屬性。
http://michlg.wordpress.com/2010/01/29/wpf-custom-validationrule-with-an-additional-parameter/
有人知道解決方案嗎?
-編輯-
我發現我對問題的解釋不夠充分;)。
實際上,.Net或我自己的程序中不存在ValidationSource標記,因為我不知道如何創建這樣的構造,該構造采用與屬性的綁定,使用其驗證屬性來驗證屬性,並以某種方式將驗證信息提供給TextBox的驗證結構。
要進一步闡述數據對象:
public class Port
{
public int PortPK { get; set; }
[StringLengthValidator]
public string Name { get; set; }
...
}
public class Ship
{
[NotNullValidator]
public int PortFK { get; set; }
...
}
因此,TextBox.Text綁定應顯示Port.Name而不對其進行驗證。 驗證應在Ship.PortFK上完成,它將顯示是否已將端口設置為Ship。
-編輯2-
該表單是用於編輯Ship數據的CRUD表單。 文本框是選擇器控件的一部分,該控件包含顯示Port.Name的文本框和用於選擇特定端口的按鈕。
驗證應表明是否已為船舶選擇端口。 為此,在Ship.PortFK上使用NotNullValidator,如果尚未設置PortFK值,則會觸發驗證器,並警告用戶選擇端口。
因此,用戶可以為船選擇特定端口,此后文本框將顯示Port.Name。 由於數據模型定義了端口對於船舶是必需的,因此TextBox的驗證應向用戶指示是否尚未為船舶選擇端口。
您可以利用MultiBinding嗎? MultiBinding使您可以將多個值轉換為單個值。
<TextBox.ValidationSource>
<MultiBinding Converter="{StaticResource multiValueConverter}">
<Binding Path="Ship.Prop1" />
<Binding Path="Ship.Prop2" />
</MultiBinding>
</TextBox.ValidationSource>
上面,Ship的兩個屬性被傳遞到名為multiValueConverter的IMultiValueConverter(您需要實現自己的轉換器)。
您的IMultiValueConverter實現應將這兩個屬性的值轉換為單個值,無論您綁定到哪個值,它都可以使用-據我所知,並沒有解決這個問題-但單個值可以是object []。
如果這樣做沒有幫助,也許您可以為我們提供更多源代碼以及您要綁定到的對象的結構?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.