我无法弄清楚我在这里缺少什么。我想将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时,它不会显示任何内容。
答案 0 :(得分:7)
ContentTemplate
是内容的模板。因此,在ContentControl
的情况下,Content
变为DataContext
的{{1}}。但是,您无法将DataTemplate
设置为Window
,并且您绑定的属性必须是公开的。
因此,在制作Content
公共财产并将XAML更改为:
Element
窗口中显示“A”。
我假设这不是您遇到问题的真实代码,但做这样的事情看起来很奇怪。也许你应该重新考虑你的设计。