2016-08-13 59 views
0

我有一個帶有ComboBox和TextBox的wpf窗口(以及其他許多與此無關的東西)。我正在嘗試在VB中爲TextBox編寫驗證例程。在我的XAML中,我有如何將運行時變量傳遞給wpf中的驗證例程

<TextBox> 
    <Binding 
     Path="Charge" 
     UpdateSourceTrigger="Explicit"> 
     <Binding.ValidationRules> 
      <e:VR /> 
     </Binding.ValidationRules> 
    </Binding> 
</TextBox> 

其中VR是我的驗證例程,e是包含我的項目引用中的VR的程序集。

我遇到的問題是VR需要知道組合框的SelectedValue以知道如何執行驗證。我如何將這個價值納入驗證程序?

+0

只是猜測這裏,但可你添加一個依賴項屬性到你的ValidationRule並將它綁定到你的ComboBox的SelectedValue? – Mark

回答

0

你可以有內部VR公共屬性,它可以同時宣告這樣的驗證規則進行設置:

public class VR : ValidationRule 
{ 
    public VR() 
    { 

    } 

    public static readonly DependencyProperty SetSelectedValueProperty= 
    DependencyProperty.Register("SetSelectedValue", typeof(string), typeof(VR), new 
     PropertyMetadata("", new PropertyChangedCallback(OnSetSelectedValuePropertyChanged))); 

    public string SetSelectedValue { 
    get { return (string)GetValue(SetSelectedValueProperty); } 
    set { SetValue(SetSelectedValueProperty, value); } 

    public override ValidationResult Validate(object value, CultureInfo cultureInfo) 
    { 

    }  

    private static void OnSetSelectedValuePropertyChanged(DependencyObject d, 
    DependencyPropertyChangedEventArgs e) { 
    // Some code 
    } 
} 

設置在XAML中的SelectedValue是這樣的:

<Binding.ValidationRules> 
    <e:VR SetSelectedValue="{Binding ElementName="ComboBox1", Path=SelectedValue.Content}"/> 
</Binding.ValidationRules> 
+0

這正是我正在尋找的 - 謝謝。但是,出現以下錯誤:「無法在」VR「類型的'SelectedValue'屬性上設置綁定。'Binding'只能在DependencyObject的DependencyProperty上設置。 – SezMe

+0

替換爲依賴項屬性。現在。 – ViVi