My UserControl требует привязки к предку (предка, являющегося MainWindow) и к себе (это код позади).Как установить DataContext для себя
Для привязки к предку, я использую
DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1,AncestorType=Window}}">
Чтобы связать элемент управления кодом позади (и, таким образом, используя «местный» DataContext), я использую
<TextBlock Text ="{Binding MyUC3Property}" Name="MyName" />
и в коде позади, устанавливая его как
this.MyName.DataContext = this;
Вышеприведенные отлично работает, где я могу связать с и т коде o предок.
Теперь я все еще хочу привязываться к коду позади и предку, но установить DataContext только в XAML (если возможно).
Я попытался
<TextBlock Text ="{Binding MyUC3Property}" DataContext="{Binding RelativeSource={RelativeSource Mode=Self}}" />
и обеспечил конструктор не устанавливает DataContext (так как я хочу, чтобы все это было сделано в XAML) - (хотя даже если я установить this.DataContext = this;
ошибка сохраняется)
и окно вывода говорит мне, что есть ошибка привязки.
System.Windows.Data Error: 40 : BindingExpression path error: 'MyUC3Property' property not found on 'object' ''TextBlock' (Name='')'. BindingExpression:Path=MyUC3Property; DataItem='TextBlock' (Name=''); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
Я думаю, что мне не хватает чего-то очевидного, но я не могу сказать, что.
* Какая * ошибка крепления есть? Что такое сообщение об ошибке? –
В конструкторе окна/набора управления 'this.DataContext = this;' – RononDex
Я предполагаю, что вы переименовали 'MyUC3Property' в' MyLocalProperty' для образца исходного кода в вопросе? –