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>
我嘗試用你建議的一個編輯我的XAML代碼,但它是一樣的。沒有更新沒有錯誤信息。 – user735052 2012-01-13 16:26:15
@ user735052 UpdateSourceTrigger = LostFocus意味着它只會在TextBox失去焦點時才運行驗證。如果您希望它在屬性更改時進行驗證,請將其更改爲「PropertyChanged」。另外,TextBox的默認驗證控件是一個紅色邊框。它不顯示驗證錯誤。要使其顯示驗證錯誤,您需要覆蓋驗證模板。 – Rachel 2012-01-13 16:37:38
我明白你想說什麼,但至少應該顯示文本框周圍的紅色邊框,當我運行我的應用程序時,我無法看到它。 – user735052 2012-01-13 16:48:43