Frage

Ich habe eine WPF TabControl, dass ich die ItemTemplate sowie die ContentTemplate gesetzt haben. Diese Registerkarte zeigt Anrufprotokollinformationen auf Basis von Kunden Tech Support-Informationen.

Innerhalb dieser gleichen Kontrolle, würde ich auch in der Lage sein will eine ReturnAuthorization Vorlage zu zeigen.

würde Ich mag diese, um die Elemente Sammlung TabControl hinzugefügt auf dem Objekttyp basiert auszulagern. Ist das etwas, was möglich ist?

Ich habe einige Pseudo-Code, die Art zeigt, was ich will, ziehen Sie:

<TabControl x:Name="tabCases" IsSynchronizedWithCurrentItem="True" ItemContainerStyle="{StaticResource ClosableTabItemTemplate}"  >
        <TabControl.ItemTemplate>
            if ( Type is Entities:Case )
            {
            <DataTemplate DataType="{x:Type Entities:Case}">
                    <TextBlock Text="{Binding Path=Id}" />
            </DataTemplate>
            }
            else if ( Type is Entities1:RAMaster )
            {
            <DataTemplate DataType="{x:Type Entities1:RAMaster}">
                <TextBlock Text="{Binding Path=Id}" />
                </DataTemplate>
            }
        </TabControl.ItemTemplate>
        <TabControl.ContentTemplate>
            <DataTemplate DataType="{x:Type Entities:Case}">
                <CallLog:CaseReadOnlyDisplay DataContext="{Binding}" />
            </DataTemplate>
        </TabControl.ContentTemplate>
    </TabControl>
War es hilfreich?

Lösung

Eine Möglichkeit, dies zu tun ist, mit so etwas wie ein ItemTemplateSelector , die können Sie auf der TabControl eingestellt. Wenn Sie jedoch nur die verschiedenen Vorlagen im TabControl müssen und wissen, was sie alle vor der Zeit sind, dann können Sie einfach lassen sie automatisch angewendet werden die Datentypen durch die Verwendung.

<TabControl x:Name="tabCases" IsSynchronizedWithCurrentItem="True" ItemContainerStyle="{StaticResource ClosableTabItemTemplate}"  >
    <TabControl.Resources>

        <DataTemplate DataType="{x:Type Entities:Case}">
                <TextBlock Text="{Binding Path=Id}" />
        </DataTemplate>

        <DataTemplate DataType="{x:Type Entities1:RAMaster}">
            <TextBlock Text="{Binding Path=Id}" />
        </DataTemplate>

    </TabControl.Resources>
    <TabControl.ContentTemplate>
        <DataTemplate DataType="{x:Type Entities:Case}">
            <CallLog:CaseReadOnlyDisplay DataContext="{Binding}" />
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top