Nano Hash - криптовалюты, майнинг, программирование

Проблема с правилом проверки привязки WPF

Я работаю над простым приложением 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, у меня на самом деле есть исключенное поведение в пользовательском интерфейсе... поэтому вопрос в том, как правильно управлять генерацией исключения?


  • Статья, которой вы следовали, устарела. взгляните на hirenkhirsaria.blogspot.co. ил/2013/05/ 16.04.2014
  • Спасибо, Йоссеф, я перейду по ссылке и буду держать вас в курсе моей проблемы. 16.04.2014
  • использование интерфейса INotifyDataError действительно было решением. Однако мне пришлось реализовать труп метода GetErrors, которого нет в учебнике. 16.04.2014
  • Отлично, опубликуйте это как ответ на свой вопрос :) 16.04.2014
  • получилось спасибо :) 17.04.2014

Ответы:


1

использование интерфейса INotifyDataError действительно было решением.

Я следил за статьей, на которую ссылается Йоссеф Харуш: http://hirenkhirsaria.blogspot.co.il/2013/05/wpf-input-validation-using-mvvm.html

Однако мне пришлось реализовать труп метода GetErrors, которого нет в учебнике.

Спасибо за вашу помощь!

17.04.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..