Как проверить привязанные текстовые поля WPF, которые зависят от значения друг друга, и как включить / отключить кнопку Ok в соответствии с проверкой - PullRequest
0 голосов
/ 27 июня 2011

У меня есть два текстовых поля и две кнопки в приложении c # WPF windows

Приложение имеет одну переменную, которая называется Total Amount.одно текстовое поле предназначено для процента скидки, а другое - для суммы скидки.если я изменил сумму скидки, то процент должен отражаться с помощью DataBinding в WPF и наоборот (у меня есть)

Я хочу проверить оба текстовых поля 1).Скидка должна быть в диапазоне от MIN до MAX 2).Сумма скидки не должна быть больше, чем Общая сумма

, и тогда кнопка «Ок» получит значение «Включить / отключить» в соответствии с проверкой

Ответы [ 2 ]

0 голосов
/ 27 июня 2011

Я бы порекомендовал вам принять шаблон MVVM (если вы этого еще не сделали) и иметь свою логику проверки в модели представления.Используя этот подход, вы можете:

  • Предоставить свойство IsValid для модели представления и связать его с кнопкой;средство получения свойства вернет результат вашей логики проверки
  • Предоставьте ICommand для модели представления, метод CanExecute которой вернет результат вашей логики проверки (рекомендуется)

Быстрый пример:

public class DiscountViewModel : ViewModel // Base class implements INotifyPropertyChanged
{
  // Define all of your view model properties, i.e., DiscountAmount, DiscountPercent, etc.

  ...

  // Define a command

  public ICommand OKCommand { get; }
}

Затем в своем представлении XAML вы добавите следующую привязку:

<Button Command={Binding Path=OkCommand} Content="OK" />

Опять же, это лишь краткий пример, который должен помочь вам указать правильное направление.В шаблоне MVVM доступно множество полезных ресурсов, а также ресурсов для шаблона команд WPF.Вот хороший вводный ресурс, который охватывает оба: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

0 голосов
/ 27 июня 2011

Для каждой привязки вы можете добавить конвертер. Это может быть преобразователь может быть преобразователь одного значения, то вы должны реализовать интерфейс IValueConverter. Но я думаю, что вы можете решить вашу проблему с IMultiValueConverter. Этому конвертеру может быть дано много значений, которые также можно получить из привязок. Конвертер получает значения из Bindings, обрабатывает их с помощью вашей логики, а затем возвращает их в ваше свойство, где вы его определили. http://msdn.microsoft.com/en-us/library/system.windows.data.imultivalueconverter.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...