【问题标题】:WPF TabControl with Materials Design (without Dragablz)带有材料设计的 WPF TabControl(没有 Dragablz)
【发布时间】:2017-02-14 18:14:22
【问题描述】:

所以,我安装了这个“XAML 中的材料设计”包,它顺利地将我的所有控件更改为更时尚。

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

所以,我正在寻找一种方法来像其他控件一样对我的 tabcontrol 进行皮肤。或者使 Dragablz tabcontrol 不可拖动和不可撕裂。我能做什么?

【问题讨论】:

    标签: c# wpf xaml tabs material-design


    【解决方案1】:

    这是一个 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); }
    }
    

    【讨论】:

    • 虽然解决方案要注意使用 Dragablz 会引入一些特定条件。我想到的一个是无法禁用或隐藏其选项卡(选项卡项)。
    • 与 .NetCore 不太兼容
    【解决方案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>
    

    看起来不错:

    【讨论】:

    • 这看起来很棒!知道如何使用它在明暗主题之间切换吗?为 MDIX 的 PaletteHelper 使用标准开关不会影响这些扩展。
    • 简答 @colin-zabransky private static void SetMaterialExtensionTheme(bool isDark) { var paletteHelper = new MaterialDesignExtensions.Themes.PaletteHelper(); paletteHelper.SetLightDark(isDark); }
    猜你喜欢
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 2015-09-02
    相关资源
    最近更新 更多