xaml - 用于 TabControl/TabPanel/TabItem的xaml WPF样式

  显示原文与译文双语对照的内容
68 4

下面是关于 WPF 。TabItem和TabPanel的一个新手问题。在StackOVF上有一个相关问题,我在应用程序中很高兴地使用了一个答案。下面是答案的链接,以及代码 Fragment:

WPF: TabControl中的中心 TabItems 。

<TabControl>
 <TabControl.Resources>
 <Style TargetType="{x:Type TabPanel}">
 <Setter Property="HorizontalAlignment" Value="Center"/>
 </Style>
 </TabControl.Resources>
 <TabItem Header="Test 1"/>
 <TabItem Header="Test 2"/>
 <TabItem Header="Test 3"/>
 <TabItem Header="Test 4"/>
</TabControl>

虽然非常棒,但我希望将资源和样式内容移到更好的位置( 样式表或者类似的) 。我第一次尝试将 <TabControl.Resources> 标记移动到 <Window.Resources> 中,但这不起作用。我尝试了几个变化,但无法工作。以下是我希望工作的尝试示例:

<!-- Doesn't work as expected: -->
<Window.Resources>
 <Style TargetType="{x:Type TabPanel}">
 <Setter Property="HorizontalAlignment" Value="Center"/>
 </Style>
</Window.Resources>

搜索web和msdn并没有帮助我解决我的问题,但是将我留给了第二个( 相关) 问题:实际上 TabPanel,它与TabControl有什么关系

任何帮助和提示都会非常感激。

( 编辑:在最后的例子中,代码无法为我工作。)

时间:原作者:0个回答

53 1

alt text

rtc使用一个专门的a 类,而不是一般的a,因为如果你乱乱地处理 tlb,那么面板就会。一个是调整多行中的选项卡标题。另一个是将重新排列项目的行,以便选定的arraylist头始终在最后一行中。我想可能会更多

对于为什么将样式放在窗口资源部分不工作,我非常感兴趣。我最初的反应是它应该工作,直到我尝试它。我将这作为一个答案添加,因为不允许我在注释中添加一个图像。

原作者:
147 3

你可能需要创建一个ControlTemplate来执行这里操作。

我还不太熟悉 ControlTemplates 。我从下面的例子中破解了这个例子:http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.tabpanel.aspx

<Style TargetType="{x:Type TabControl}">
 <Setter Property="OverridesDefaultStyle" Value="True"/>
 <Setter Property="SnapsToDevicePixels" Value="True"/>
 <Setter Property="Template">
 <Setter.Value>
 <ControlTemplate TargetType="{x:Type TabControl}">
 <Grid KeyboardNavigation.TabNavigation="Local">
 <Grid.RowDefinitions>
 <RowDefinition Height="Auto"/>
 <RowDefinition Height="*"/>
 </Grid.RowDefinitions>
 <TabPanel Name="HeaderPanel"
 Grid.Row="0"
 Panel.ZIndex="1" 
 Margin="0,0,4,-1" 
 IsItemsHost="True"
 KeyboardNavigation.TabIndex="1"
 HorizontalAlignment="Center"/>
 </Grid>
 </ControlTemplate>
 </Setter.Value>
 </Setter>
 </Style>
原作者:
...