WPF TabControl与材料设计(没有Dragablz)

时间:2017-02-14 18:14:23

标签: c# wpf xaml tabs material-design

所以,我安装了这个"材料设计在XAML"包装和它顺利地改变了我的所有控件更时尚。

只有标签控件似乎有旧的设计。我查了一下,但我唯一能找到的就是这个" Dragablz Tab Control"你可以拖拉。好吧,我不希望我的用户拖动或撕掉我的标签。

所以,我正在寻找一种方法来像我的其他控件那样使用tabcontrol。或者使Dragablz tabcontrol不可拖动和不可撕裂。我该怎么办?

2 个答案:

答案 0 :(得分:2)

这里有一个Dragablz tabcontrol不可拖动和不可撕掉的例子:

<dragablz:TabablzControl FixedHeaderCount="3">
   <TabItem Header="HELLO">
      <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">Hello World</TextBlock>
   </TabItem>
   <TabItem Header="MATERIAL">
      <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">Material Design</TextBlock>
   </TabItem>
   <TabItem Header="DESIGN">
      <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">Looks Quite Nice</TextBlock>
   </TabItem>                             
</dragablz:TabablzControl>

您可以将 FixedHeaderCount 属性值设置为tabscontrol上的标签数,以便修复这些标签。 (正如您从source所见)

/// <summary>
/// Allows a the first adjacent tabs to be fixed (no dragging, and default close button will not show).
/// </summary>
public int FixedHeaderCount
{
   get { return (int) GetValue(FixedHeaderCountProperty); }
   set { SetValue(FixedHeaderCountProperty, value); }
}

答案 1 :(得分:2)

看看MaterialDesignExtensions。它们具有TabControl的样式。

  1. 首先安装Nuget软件包,然后将样式添加到您的App.xaml like in this example
<ResourceDictionary.MergedDictionaries>
    <!-- Other MaterialDesign resource stuff -->
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignExtensions;component/Themes/Generic.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MaterialDesignExtensions;component/Themes/MaterialDesignLightTheme.xaml" />
</ResourceDictionary.MergedDictionaries>
  1. 然后,只需设置标签控件的样式:
<TabControl Style="{StaticResource MaterialDesignTabControl}">
    <TabItem Header="Tab 1">
        <!-- Your tab content -->
    </TabItem>
    <TabItem Header="Tab 2">
        <!-- Your tab content --> 
    </TabItem>
</TabControl>

看起来不错:

enter image description here