У меня есть тестовое окно WPF, в этом окне я объявляю ресурс окна и хочу связать текст данных окна с свойством зависимости этого объекта ресурса. Вот мой пример:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:local="clr-namespace:WpfApplication1"
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
>
<Window.Resources>
<local:TestObj x:Key="MyResObj" Target="{Binding DataContext, diagnostics:PresentationTraceSources.TraceLevel=High}" />
</Window.Resources>
<Grid>
<TextBox Tag="{StaticResource MyResObj}" />
</Grid>
</Window>
и код:
public partial class MainWindow : Window
{
public MainWindow()
{
this.DataContext = this;
InitializeComponent();
}
}
и вот мой TestObj:
namespace WpfApplication1
{
public class TestObj : DependencyObject
{
public static readonly DependencyProperty TargetProperty = DependencyProperty.Register("Target", typeof(object), typeof(TestObj));
public object Target
{
get { return this.GetValue(TargetProperty); }
set { SetValue(TargetProperty, value); }
}
}
}
это упрощенный пример, я хочу в конечном итоге связать более сложные вещи из окна с элементами, объявленными в разделе Window.Resources. В настоящее время это не работает, как я ожидал, поэтому я включил подробное ведение журнала привязки - ошибка привязки, которую я получаю,
Предупреждение System.Windows.Data: 54: Создано выражение BindingExpression (хэш = 38018250) для привязки (хэш = 40782967)
Предупреждение System.Windows.Data: 56: Путь: 'DataContext'
Предупреждение System.Windows.Data: 58: BindingExpression (hash = 38018250): режим по умолчанию разрешен в OneWay
Предупреждение System.Windows.Data: 59: BindingExpression (hash = 38018250): триггер обновления по умолчанию разрешен в PropertyChanged
Предупреждение System.Windows.Data: 60: BindingExpression (hash = 38018250): присоединить к WpfApplication16.TestObj.Target (hash = 39268741)
Предупреждение System.Windows.Data: 62: BindingExpression (hash = 38018250): использовать наставника Framework
Предупреждение System.Windows.Data: 65: BindingExpression (хэш = 38018250): разрешающий источник
Предупреждение System.Windows.Data: 67: BindingExpression (hash = 38018250): Ментор фреймворка не найден
Предупреждение System.Windows.Data: 63: BindingExpression (хэш = 38018250): разрешение источника отложено
'WpfApplication16.vshost.exe' (управляемый (v4.0.30319)): загружен 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationFramework.Aero \ v4.0_4.0.0.0__31bf3856ad364e35 \ PresentationFramework.Aero.dll'
Предупреждение System.Windows.Data: 65: BindingExpression (хэш = 38018250): источник разрешения
Предупреждение System.Windows.Data: 67: BindingExpression (hash = 38018250): не найден наставник платформы
Предупреждение System.Windows.Data: 65: BindingExpression (хэш = 38018250): источник разрешения (последний шанс)
Предупреждение System.Windows.Data: 67: BindingExpression (hash = 38018250): Ментор фреймворка не найден
Ошибка System.Windows.Data: 2: не удается найти управляющий FrameworkElement или FrameworkContentElement для целевого элемента. BindingExpression: Path = DataContext; DataItem = NULL; целевой элемент - «TestObj» (HashCode = 39268741); Свойство target - 'Target' (тип 'Object')
Можно ли даже привязать элементы окна к таким ресурсам? Или я ошибся с моим переплетом?
Спасибо !!