无法绑定contentPresenter的内容

时间:2011-07-08 21:13:52

标签: c# wpf xaml data-binding

我无法弄清楚我在这里缺少什么。我想将ContentPresenter的内容绑定到UIElement。我正在做这样的事情:

<Window.Resources>
    <DataTemplate x:Key="container">
        <Border>
            <!--<TextBlock Text="A"/>-->
            <ContentPresenter Content="{Binding Element}" />
        </Border>
    </DataTemplate>
</Window.Resources>
<ContentControl DataContext="{Binding}" ContentTemplate="{StaticResource container}" />

在MainWindow.cs

UIElement Element { get; set; }

public MainWindow()
{
    Element = new TextBox() { Text = "A" };
    DataContext = this;
    InitializeComponent();
}

我可以直接输入textBlock,但是当我尝试使用ContentPresenter时,它不会显示任何内容。

1 个答案:

答案 0 :(得分:7)

ContentTemplate内容的模板。因此,在ContentControl的情况下,Content变为DataContext的{​​{1}}。但是,您无法将DataTemplate设置为Window,并且您绑定的属性必须是公开的。

因此,在制作Content公共财产并将XAML更改为:

之后
Element

窗口中显示“A”。

我假设这不是您遇到问题的真实代码,但做这样的事情看起来很奇怪。也许你应该重新考虑你的设计。