簡體   English   中英

WPF TextBox單獨的驗證源

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM