Я пытаюсь создать свой собственный ContentControl, производный от Control, для полного понимания концепций дерева темных wpf. На данный момент я только что реализовал логическую часть (Content) ContentControl.
Мой код позади:
[ContentProperty("Content")]
public class MyContentControl : Control
{
public MyContentControl()
{
}
public Object Content
{
get { return (Object)GetValue(ContentProperty); }
set { SetValue(ContentProperty, value); }
}
public static readonly DependencyProperty ContentProperty =
DependencyProperty.Register("Content", typeof(Object), typeof(MyContentControl), new UIPropertyMetadata());
}
XAML:
<StackPanel x:Name="stackPanel">
<TextBlock Visibility="Collapsed" x:Name="textBlock" Text="Hello World"/>
<ContentControl>
<TextBlock Background="LightBlue" Text="{Binding Text, ElementName=textBlock}"/>
</ContentControl>
<local:MyContentControl>
<TextBlock Text="{Binding Text, ElementName=textBlock}"/>
</local:MyContentControl>
</StackPanel>
Я получил следующую ошибку привязки:
System.Windows.Data Ошибка: 4: не удается найти источник для привязки со ссылкой «ElementName = textBlock». BindingExpression: Path = Text; DataItem = NULL; целевым элементом является TextBlock (Name = ''); Целевым свойством является «Текст» (тип «Строка»)
Это похоже на то, что внутренний текстовый блок не может подняться в логическом дереве и найти оригинальный текстовый блок, с которым он должен связываться. Мне не удалось установить myContentControl в качестве родителя объекта Content.
Есть идеи?
Спасибо за ваше время.
Jonas