1

私が今抱えている問題は、現在持っているテキストボックスごとに、テキストボックスが空かどうかを検証するためにバインディングパスを指定する必要があることです。ただし、100 個の textBox がある場合、100 個すべての textBox に対して個別に get メソッドと set メソッドを作成することはできません。それで、私が今持っている現在の検証を行うためのより良い方法はありますか?

以下は私が現在持っているコードです、

XAML で

 <Grid.BindingGroup>
            <BindingGroup Name="RequiredFields">
                <BindingGroup.ValidationRules>
                    <local:MandatoryFieldRule ValidationStep ="CommittedValue"/>
                </BindingGroup.ValidationRules>
            </BindingGroup>
        </Grid.BindingGroup>
            <TextBox x:Name="ds_instruct" HorizontalAlignment="Left" Height="30"
               Margin="286,186,0,0" TextWrapping="Wrap" VerticalAlignment="Top"    
               Width="275" FontSize="11" GotFocus="textBox_Expand"                                                     
               LostFocus="textBox_Expand" Tag="Default Special Instruction" 
               SpellCheck.IsEnabled="True" 
               Text="{Binding  Path=Text, BindingGroupName=RequiredFields,ValidatesOnDataErrors=true}"/>

検証ファイル内:

public String Text { get; set; }
public String Text1 { get; set; }

 #region IDataErrorInfo Members
   public string Error
    {
        get {throw new NotImplementedException(); }
    }

    public string this[string columnName]
    {
        get 
        {
            string result = null;
            if (columnName == "Text")
            {
                if (string.IsNullOrEmpty(Text))
                {result = "Mandatory field required"; }
            }
            if (columnName == "Text1")
            {
                if (string.IsNullOrEmpty(Text1))
                { result = "Mandatory field required"; }
            }
            return result;

        }

    }

    #endregion

だから私の質問は、1対1のバインディング(TextBoxからgetterおよびsetterメソッドへ)を指定せずに、複数のtextBoxesの必須フィールドを検証する方法ですか?

よろしくお願いします!

4

1 に答える 1

0

Reflectionおそらく、文字列の値を確認するために使用できます

public string this[string columnName]
{
    get 
    {
        string result = null;
        if (string.IsNullOrEmpty(this.GetType().GetProperty(columnName).GetValue(this) as string))
        {
            result = "Mandatory field required";
        }
        return result;
    }
}
于 2013-03-29T00:00:51.467 に答える