Я хочу иметь доступ к родительскому DataContext в ресурсе, чтобы использовать его в привязке. Вот пример:Ресурс со связыванием с родителем DataContext
<Window x:Class="WpfApplication44.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:WpfApplication44"
x:Name="MyWindows"
Title="MainWindow"
Width="525"
Height="350"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Window.Resources>
<l:SomeResource x:Key="SomeResource">
<l:SomeResource.Context>
<!--
DataContext is set to windows object.
I want to bind to window`s title property
-->
<Binding Path="Title" />
</l:SomeResource.Context>
</l:SomeResource>
</Window.Resources>
<StackPanel>
<Label>
<StaticResource ResourceKey="SomeResource" />
</Label>
<!-- UPD -->
<TextBlock Text="{Binding Source={StaticResource SomeResource}, Path=Context}" />
</StackPanel>
Но я получаю:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Title; DataItem=null; target element is 'SomeResource' (HashCode=25557385); target property is 'Context' (type 'Object')
SomeResource является производным от DependencyObject и содержит только один зависимостях свойство контекста объекта типа.
Похоже, что ресурсы не имеют доступа к свойству DataContext родителя и не установлены событие, если ресурс имеет тип FrameworkElement. Я пытался использовать ElementName, RelativeSource в моей привязке, но не повезло.
Все, что мне нужно - это установить родительский DataContext для ресурсов. Я использую MVVM, поэтому любые решения MVVM предпочтительнее.
UPD Ссылка проекта here
Это отлично работает для меня. Pls предоставляет код «Window» и «SomeResource» тоже! – sac1
Привет, @ sac1, вот ссылка на полный проект: http://1drv.ms/1brwkVZ. Вы использовали именно мой код? спасибо – aderesh