簡體   English   中英

如何讓我的驗證代碼在沒有綁定的項目上執行?

[英]How can I get my validation code to execute on an item with no binding?

問題:我正在創建處理數據轉換的用戶控件(通過轉換器/驗證規則)。 這可以按要求 100% 工作,但僅當控件綁定到某物時才會觸發驗證,但情況並非總是如此。

即使控件未綁定,有沒有辦法強制驗證? 或者有沒有辦法基本上設置一個虛擬綁定。 (解決方案需要在代碼中完成,以便最終結果是拖放用戶控件,程序員不需要 xaml 自定義。

提前感謝您的任何建議。

編輯:真的有問題的代碼是這樣的:

Binding TextBinding = BindingOperations.GetBinding(this, TextBox.TextProperty);
TextBinding.ValidationRules.Add(MyValidationRule);

這就是我分配驗證規則的方式,但它僅在 TextBinding 不是 null 時才有效。 所以我要么需要為我的 TextBox 設置一個虛擬綁定,要么需要另一種方式來添加驗證規則。

在我看來,您想要做的是在您的用戶控件上定義一個依賴屬性,您的用戶控件中的 XAML 綁定到該屬性。 此綁定將包含您的驗證規則。 然后,您的用戶控件的使用者會將您的用戶控件上的屬性綁定到他們想要的任何內容。

如果沒有您的確切用例,真的很難比這更具體,但請考慮一下:

CoolUserControl.xaml.cs

public class CoolUserControl : UserControl
{
    public static readonly DependencyProperty CoolProperty = ...;

    public string Cool
    {
        // get / set
    }
}

CoolUserControl.xaml

<UserControl x:Name="root" ...>
    <TextBox>
        <TextBox.Text>
            <Binding Path="Cool" ElementName="root">
                <Binding.ValidationRules>
                    <!-- your rule here -->
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
</UserControl>

SomeConsumer.xaml

<local:CoolUserControl Cool="{Binding SomePropertyOnMyViewModel}"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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