Не удается связать содержимое contentPresenter - PullRequest
1 голос
/ 09 июля 2011

Я не могу понять, чего мне здесь не хватает.Я хочу привязать содержимое 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 Ответ

7 голосов
/ 09 июля 2011

ContentTemplate - это шаблон для содержимого .Так, в случае ContentControl, Content становится DataContext из DataTemplate.Но вы не можете установить Window как Content, и свойство, к которому вы привязываете, должно быть общедоступным.

Итак, после создания Element открытого свойства и изменения XAML на:

<Window.Resources>
    <DataTemplate x:Key="container">
        <Border>
            <ContentPresenter Content="{Binding}" />
        </Border>
    </DataTemplate>
</Window.Resources>
<ContentControl Content="{Binding Element}" ContentTemplate="{StaticResource container}" />

«A» отображается в окне.

Я предполагаю, что это не настоящий код, в котором вы столкнулись с проблемой, но выполнение чего-то подобного выглядит очень странно.Может быть, вы должны переосмыслить свой дизайн.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...