Я работаю над простым приложением WPF, и я застрял на чем-то очень простом, но я не могу найти решение даже после многих поисков.
Вопрос касается правила проверки привязки свойства TextBox Text.
Я хотел бы просто создать сообщение, когда текст, введенный в текстовое поле, не проверен.
Я следил за этими двумя страницами по этому вопросу:
http://msdn.microsoft.com/fr-fr/library/ms752347%28v=vs.110%29.aspx
http://www.codeproject.com/Articles/15239/Validation-in-Windows-Presentation-Foundation
но я не могу найти, где я не прав.
Вот пример моего кода:
XAML-часть:
<TextBox x:Name="deviceIPAddressTextBox" HorizontalAlignment="Left" Height="23" Margin="109,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" FontStyle="Italic">
<TextBox.Text>
<Binding Path="Address" UpdateSourceTrigger="LostFocus" Mode="TwoWay">
<Binding.ValidationRules>
<ExceptionValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Часть кода:
public partial class MainWindow : Window
{
public Device CurrentDevice;
public MainWindow()
{
CurrentDevice = new Device();
InitializeComponent();
deviceIPAddressTextBox.DataContext = CurrentDevice;
}
с таким классом устройств:
public class Device : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _Address;
public string Address
{
get { return _Address; }
set
{
if (string.IsNullOrEmpty(value)
{
_Address = "Enter IP Address";
OnPropertyChanged("Address");
return;
}
IPAddress ipAddress;
if (IPAddress.TryParse(value, out ipAddress))
{
_Address = value;
OnPropertyChanged("Address");
}
else
{
throw new ApplicationException("Not valid IP");
}
}
}
public Device()
{
Address = "Enter IP Address";
}
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
Следуя различным урокам, которые я читал при запуске ApplicationException, у меня должно быть что-то вроде красной границы TextBox (по умолчанию WPF), но вместо этого у меня есть классическое «Не обработанное исключение»,
Не могли бы вы помочь мне в этом?
Большое спасибо.
Обновление 1: часть ответа
Даже если у меня есть «Необработанное исключение» Visual Studio, у меня на самом деле есть исключенное поведение в пользовательском интерфейсе... поэтому вопрос в том, как правильно управлять генерацией исключения?