Ich habe ein benutzerdefiniertes Steuerelement, das von TabItem
abgeleitet ist, und ich möchte diese benutzerdefinierte TabItem
zu einem Lager TabControl
. Ich würde lieber vermeiden, eine neue TabControl
nur für diesen seltenen Fall zu erstellen.Wie kann ich ein benutzerdefiniertes TabItem-Steuerelement beim Datenbinding eines TabControl in WPF verwenden?
Das ist, was ich habe und ich habe kein Glück, die richtige Kontrolle geladen zu bekommen. In diesem Fall möchte ich meine ClosableTabItem
Steuerung anstelle der Lager TabItem
Steuerung verwenden.
<TabControl x:Name="tabCases" IsSynchronizedWithCurrentItem="True"
Controls:ClosableTabItem.TabClose="TabClosed" >
<TabControl.ItemTemplate>
<DataTemplate DataType="{x:Type Controls:ClosableTabItem}" >
<TextBlock Text="{Binding Path=Id}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate DataType="{x:Type Entities:Case}">
<CallLog:CaseReadOnlyDisplay DataContext="{Binding}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
EDIT: Das ist, was ich mit endete, anstatt zu versuchen, ein benutzerdefiniertes Steuerelement zu binden. Die "CloseCommand" im bekommen von einer previous question.
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border
Name="Border"
Background="LightGray"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="25,0,0,0"
SnapsToDevicePixels="True">
<StackPanel Orientation="Horizontal">
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="20,1,5,1"/>
<Button
Command="{Binding Path=CloseCommand}"
Cursor="Hand"
DockPanel.Dock="Right"
Focusable="False"
Margin="1,1,5,1"
Background="Transparent"
BorderThickness="0">
<Image Source="/Russound.Windows;component/Resources/Delete.png" Height="10" />
</Button>
</StackPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
<Setter TargetName="Border" Property="Background" Value="LightBlue" />
<Setter TargetName="Border" Property="BorderThickness" Value="1,1,1,0" />
<Setter TargetName="Border" Property="BorderBrush" Value="DarkBlue" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Ich habe das versucht, und was scheint zu passieren ist, dass meine benutzerdefinierte Steuerung in einem Lager TabItem geladen wird. Dies lässt mich mit einem Rahmen um mein benutzerdefiniertes Steuerelement, sowie meine benutzerdefinierte Steuerelement nicht wissen, wie Sie den Fokus auf den Bestand Tabitem übergeben. – Russ