Добавьте ValidationRules в одну строку xaml ИЛИ сокращение ValidationRules

Я использую PasswordBox, который предоставляет свойство зависимости, так что я могу связать его. Проблема в том, что, используя его таким образом, я не могу сократить Binding.ValidationRules до этого синтаксиса:

<PasswordBox services:RPLPasswordBoxBinder.BindPassword="True" 
             services:RPLPasswordBoxBinder.BoundPassword="{Binding Path=LoginUser.Parola, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> 
</PasswordBox>

Я установил свои ValidationRules в текстовое поле следующим образом:

<TextBox.Text>
   <Binding Path="LoginUser.Parola" UpdateSourceTrigger="PropertyChanged">
       <Binding.ValidationRules>
           <some validation rule/>
        </Binding.ValidationRules>
   </Binding>
</TextBox.Text>

Есть ли способ указать коллекцию ValidationRules для моего PasswordBox в одной строке xaml? Или, может быть, есть другое умное решение для проверки ввода пользователя в поле моего пароля?

Некоторые уточнения:

Я использую MVVM и не хочу использовать код позади.

Я хочу добавить только одно правило ValidationRule. Возможно, проблема с сокращением Binding.ValidationRules заключается в том, что это свойство является коллекцией. В моей ситуации было бы достаточно одного правила проверки.

Аналогичный вопрос о stackoverflow здесь. Моя проблема в другом, так как я не просто хочу повысить читабельность, но фактически проверить свой PasswordBox.


person Florin Bombeanu    schedule 24.10.2011    source источник
comment
Отвечает ли это на ваш вопрос? Можете ли вы использовать Binding ValidationRule в пределах 1 строки в xaml?   -  person Peter Duniho    schedule 20.04.2020
comment
Первоначально об этом спросили почти десять лет назад, и Флорина не видели с 2016 года. Возможно, новый ответ и объяснение различий между кодом тогда и сейчас в новом ответе были бы лучше.   -  person ChrisBD    schedule 06.05.2021


Ответы (1)


Я предлагаю вам основывать свой класс модели данных на IDataErrorInfo, а затем выполнять проверку там, а не в коде позади.

Примеров множество, но вот один для начала, а другой здесь.

person ChrisBD    schedule 24.10.2011
comment
Работал как шарм. Однако для начинающих я бы посоветовал эта ссылка msdn для примера. Мне было легче читать и воспроизводить. - person Florin Bombeanu; 24.10.2011