2
私はWPFを初めて使用し、送信フォームで検証コントロールを実装しようとしています。WPF検証コントロール
誰でも助けてくれますか?私が無効なデータを入力しても何もしなくても、私のコードはエラーメッセージを表示しません。ここで
私のコードは、
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
public class UserName : INotifyPropertyChanged, IDataErrorInfo
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
PropertyChanged(this, e);
}
private string username;
public string _UserName
{
get { return username; }
set
{
username = value;
OnPropertyChanged(new PropertyChangedEventArgs("_UserName"));
}
}
public string this[string propertyName]
{
get
{
if (propertyName == "_UserName")
{
bool valid = true;
foreach (char c in _UserName)
{
if (!Char.IsLetterOrDigit(c))
{
valid = false;
break;
}
}
if (!valid)
return "The Username can only contain letters and numbers.";
}
return null;
}
}
public string Error
{
get { return null; }
}
}
} 私のXAMLコードは、
<Grid>
<Label Content="User Name" Height="28" HorizontalAlignment="Left" Margin="27,37,0,0" Name="UserNameLB" VerticalAlignment="Top" Width="96" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="135,37,0,0" Name="UserNameTB" VerticalAlignment="Top" Width="189">
<TextBox.Text>
<Binding Path="_UserName">
<Binding.ValidationRules>
<DataErrorValidationRule></DataErrorValidationRule>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</Grid>
にエラーメッセージが表示されますが、それは同じです。 no updateはエラーメッセージではありません。 – user735052
@ user735052 'UpdateSourceTrigger = LostFocus'は、TextBoxがフォーカスを失ったときにのみ検証を実行することを意味します。プロパティを変更するたびに検証する場合は、 'PropertyChanged'に変更してください。また、TextBoxの既定の検証コントロールは、その周囲に赤い境界線があります。検証エラーは表示されません。検証エラーを表示するには、検証テンプレートを上書きする必要があります。 – Rachel
私はあなたが言うことを理解していますが、少なくともアプリケーションを実行するときに見ることができないテキストボックスの周りに赤い枠線が表示されるはずです。 – user735052