我試圖讓自己從Control派生的ContentControl完全理解黑暗的wpf樹概念。目前,我剛剛實現了ContentControl的邏輯部分(Content)。WPF:綁定找不到源
我後面的代碼:
[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 Error: 4 : Cannot find source for binding with reference 'ElementName=textBlock'. BindingExpression:Path=Text; DataItem=null; target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
它像內的TextBlock中上不去邏輯樹並找到它應該綁定的原始文本塊。我無法將myContentControl設置爲Content對象的父級。
任何idee?
感謝您的時間。
喬納斯
謝謝您的回答。我需要再考慮一下,但你的鏈接非常有幫助。我不想更改xaml,但我想知道在哪種方式下,我應該修改MyContentControl後面的代碼,使其可以具有與ContentControl完全相同的行爲。 – Jonas