Использование привязки данных к значению, которое является FrameworkElement - PullRequest
6 голосов
/ 02 апреля 2010

Один из моих источников данных создает коллекцию значений, которые набираются в следующем интерфейсе

public interface IData
{
    string Name { get; }
    FrameworkElement VisualElement { get; }
}

Я хотел бы использовать привязку данных в WPF для отображения коллекции IData экземпляров в TabControl, где значение Name становится заголовком вкладки, а значение VisualElement отображается как содержимое. соответствующей вкладки.

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

    <TabControl ItemsSource="{Binding}">
        <TabControl.ItemTemplate>
            <DataTemplate>
                <Label Content="{Binding Name}"/>
            </DataTemplate>
        </TabControl.ItemTemplate>
        <TabControl.ContentTemplate>
            <DataTemplate>
                How do I display VisualElement here?
            </DataTemplate>
        </TabControl.ContentTemplate>
    </TabControl> 

Я все еще очень новичок в WPF, поэтому я могу упустить очевидное здесь.

1 Ответ

10 голосов
/ 02 апреля 2010

ContentPresenter с были сделаны для этого.Шаблон содержимого становится:

        <TabControl.ContentTemplate>
            <DataTemplate>
                <ContentPresenter Content="{Binding VisualElement}" />
            </DataTemplate>
        </TabControl.ContentTemplate>

Я проверил его с TextBlock и TextBox.

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