C# WPF использование привязки в TextBox RelativeSource и ValidationRules
Есть окно, у которого в DataContext записана ViewModel. Внутри окна есть UserControl в ресурсах которого описаны несколько шаблонов отображения данных - DataTemplate. В каждом шаблоне есть TexBox-ы текст которых я привязываю к некоторому свойству во ViewModel.
<TextBox Text="{Binding DataContext.PropertyName, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/>
Все вроде бы хорошо, но мне нужно добавить валидацию вводимых данных. Делаю так:
<TextBox Margin="15,0,15,0" Style="{DynamicResource TextStyle}">
<TextBox.Text>
<Binding
Path="PropertyName"
RelativeSource="{RelativeSource Mode=FindAncestor,
AncestorType=Window}">
<Binding.ValidationRules>
<DataErrorValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
И дизайнер студии выдает ошибку "Не удалось найти свойство "PropertyName" в типе "String"". В общем проблема такова: я не могу "привязаться" к свойству ViewModel при использовании валидации данных. Прошу подсказать как это можно реализовать. Спасибо!
Ответы (1 шт):
В общем сам разобрался. Вместо вот этого:
<TextBox.Text>
<Binding Path="PropertyName" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=Window}">
<Binding.ValidationRules>
<DataErrorValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
Я просто в TextBox добавил атрибут ValidatesOnDataErrors=True и все заработало.
Text="{Binding DataContext.PropertyName, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}">