バインディングを使用してテキストボックスのボタンクリックで検証を達成しようとしています。基本的に、[送信]をクリックすると、テキストボックスが赤くならず、「必須」エラーが表示されます。テキストを追加すると、そのテキストが表示されます。IDataErrorInfoをボタンクリックイベントで実装する
私は妥当性確認時に新しいです、そして、これを一週間ほど、欲求不満で起きています。私は私の答えが何かを持っているかもしれないと思います。しかし私は確信していないし、専門家に尋ねることに頼っています。
このすべての助けと感謝しなければならないでしょう。ここで
は私のモデルクラスである:ここで
public class sForms : INotifyPropertyChanged, IDataErrorInfo
{
private string name;
public string NAME { get { return name; } set { if (name != value) name = value.Trim(); OnPropertyChanged("NAME"); } }
public string this[string columnName]
{
get
{
return ValidationError(columnName);
}
}
public string Error { get { return null; } }
private string ValidationError(string columnName)
{
string error = null;
switch (columnName)
{
case "NAME":
error = IsNameValid();
break;
}
return
error;
}
static readonly string[] ValidatedProperties = { "NAME" };
public bool IsValid
{
get
{
foreach (string property in ValidatedProperties)
{
if (ValidationError(property) != null)
{
return
false;
}
}
return
true;
}
}
public string IsNameValid()
{
if (string.IsNullOrWhiteSpace(NAME) || string.IsNullOrEmpty(NAME))
return "Required";
else
return
null;
}
#region Property Changed
private void OnPropertyChanged(string propertyName)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
は私のボタン+テキストボックスのための私のXAMLです。
<TextBox Controls:TextBoxHelper.UseFloatingWatermark="True"
Controls:TextBoxHelper.Watermark="Name *"
Grid.Column="1" Grid.Row="1"
Margin="0 0 2 0"
Text="{Binding Path=NAME, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
>
<Button Content="Submit"
Style="{DynamicResource SquareButtonStyle}"
VerticalAlignment="Bottom" HorizontalAlignment="Right"
Margin="0 0 10 0"
Click="Submit_Click"
/>
ここに私のコードがあります。
public v_subsForm()
{
InitializeComponent();
this.DataContext = subs;
}
sForms subs = new sForms();
#region PropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
private void Submit_Click(object sender, RoutedEventArgs e)
{
if (subs.IsValid)
MessageBox.Show("True");
else
MessageBox.Show("False");
}
達成するために何を達成しようとしていますか? –
「送信ボタン」をクリックすると、NAMEテキストボックスにヌルであるために検証エラーが表示されます。 –
申し訳ありませんが、今はあなたを助けることができませんが、[WPFチャットルーム](https://stackoverflow.com/questions/47325597/implement-idataerrorinfo-on-button-click-event)あなたも助けを受けるとき。 –