2016-08-13 9 views
0

私はComboBoxとTextBox(そしてここでは関係のない他の多くのもの)を持つwpfウィンドウを持っています。私はTextBoxのVBで検証ルーチンを記述しようとしています。私のXAMLで、私はVRが私の検証ルーチンで、eは私のプロジェクト参照であるVRを含むアセンブリであるwpfでランタイム変数を検証ルーチンに渡す方法

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

を持っています。

私はVRが検証を実行する方法を知るためにComboBoxのSelectedValueを知る必要があるという問題があります。その値を検証ルーチンにどのように取得するのですか?

+0

ちょうどここに推測をすることができますが、 ValidationRuleに依存関係プロパティを追加し、それをComboBoxのSelectedValueにバインドしますか? – Mark

答えて

0

あなたは、このような検証ルールを宣言しながら、設定することができVR内のパブリックプロパティを持つことができます。このようなXAMLでSelectedValueのを設定し

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 
    } 
} 

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

これはまさに私が探しているものです - ありがとう。しかし、次のようなエラーが表示されます: "バインドは、 'VR'タイプの 'SelectedValue'プロパティでは設定できません。 'Binding'はDependencyObjectのDependencyPropertyでのみ設定できます。 – SezMe

+0

依存関係プロパティに置き換えられました。今。 – ViVi

関連する問題