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 шт):

Автор решения: alex6327

В общем сам разобрался. Вместо вот этого:

<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}">
→ Ссылка