2016-01-16 3 views
3

Я работаю в WPF с помощью MaterialDesign Toolkit и Dragablz. У меня возникла проблема при попытке стирать TabablzControl. У меня уже есть стиль для окон по умолчанию TabControl и TabItem заголовка, как показано на рисунке: http://i.imgur.com/2anl5rl.pngWPF: Дизайн материалов + dragablz tabItem header style

Но когда я изменяю TabControl по умолчанию для TabablzControl, он превращается в это: http://i.imgur.com/bhaaMVy.png

Вот window.resources:

<Style x:Key="mdTabControl" TargetType="TabControl"> 
     <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesignBody}"/> 
     <Setter Property="Background" Value="{DynamicResource MaterialDesignPaper}"></Setter> 
    </Style> 
    <Style x:Key="mdTabHeader" TargetType="{x:Type TabItem}"> 
     <Setter Property="Background" Value="{DynamicResource MaterialDesignPaper}"></Setter> 
     <Setter Property="Foreground" Value="{DynamicResource MaterialDesignBody}"></Setter> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabItem}"> 
        <Grid> 
         <Border Name="Border" Margin="1,0,1,0" CornerRadius="3 3 0 0"> 
          <ContentPresenter x:Name="ContentSite" VerticalAlignment="Center" 
               HorizontalAlignment="Center" 
               ContentSource="Header" Margin="10,2,10,2" 
               RecognizesAccessKey="True"> 
          </ContentPresenter> 
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter Property="Panel.ZIndex" Value="100" /> 
          <Setter TargetName="Border" Property="Background" Value="{StaticResource SecondaryAccentBrush}" /> 
          <Setter Property="Foreground" Value="{StaticResource SecondaryAccentForegroundBrush}"/> 
         </Trigger> 
         <Trigger Property="IsSelected" Value="False"> 
          <Setter Property="Panel.ZIndex" Value="100" /> 
          <Setter TargetName="Border" Property="Background" Value="{StaticResource PrimaryHueMidBrush}" /> 
          <Setter Property="Foreground" Value="{StaticResource PrimaryHueMidForegroundBrush}"/> 
         </Trigger> 
         <Trigger Property="IsEnabled" Value="False"> 
          <Setter TargetName="Border" Property="Background" Value="{StaticResource PrimaryHueDarkBrush}" /> 
          <Setter Property="Foreground" Value="{StaticResource PrimaryHueDarkForegroundBrush}" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

ошибка возникает при изменении TargetType mdTabControl стиля для: TargetType="dbz:TabablzControl"

Я хочу, чтобы сохранить стиль я поставил в TabControl, но с добавлением функциональности TabablzControl

Любая помощь будет оценена

ответ

8

Прежде всего следует отметить, что является общим WPF характеристикой, вы не используете стиль наследования правильно.

Как вы используете материал Design с Dragablz, если вы рестайлинг сам вкладками, вы должны наследовать от материала стиля дизайна в сборке Dragablz использования BasedOn:

<Style x:Key="mdTabControl" TargetType="TabControl" BasedOn="{StaticResource MaterialDesignTabablzControlStyle}"> 
    <Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesignBody}"/> 
    <Setter Property="Background" Value="{DynamicResource MaterialDesignPaper}"></Setter> 
</Style> 

Опять же, с сама закладка заголовка, вы должны наследоваться от соответствующего стиля:

<Style x:Key="mdTabHeader" TargetType="{x:Type TabItem}" BasedOn="{StaticResource MaterialDesignDragableTabItemStyle}"> 
    . . . 
</Style> 

Заметим, что (в зависимости от вас ваши настройки App.xaml), вы, вероятно, необходимо убедиться, что правильный словарь ресурс включен в т он тот же файл XAML. Например, более полный XAML может быть:

<Window.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/Dragablz;component/Themes/materialdesign.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
     <Style x:Key="NormalTabItemStyle" TargetType="{x:Type dragablz:DragablzItem}" BasedOn="{StaticResource MaterialDesignDragableTabItemStyle}"> 
      <Setter Property="Width" Value="280" /> 
      <Setter Property="Padding" Value="1" /> 
     </Style> 
     . . . 
    </ResourceDictionary>     
</Window.Resources> 

Наконец, как вы меняете стиль TabItem, вам необходимо либо стиль TabablzCOntrol правильный стиль, или вы можете использовать его там, где вы на самом деле объявить TabablzControl сам:

<dragablz:TabablzControl ItemContainerStyle="{StaticResource mdTabHeader}" /> 

хороший пример все это в действии в SidePanels проект в демонстрационном решения по адресу: https://github.com/ButchersBoy/DragablzSamplez

+0

Спасибо, Это я не вызывал правильные словарные словари в моем App.xaml, я только начал изучать WPF и не знал, как правильно установить стили. –

0
<Style TargetType="{x:Type dragablz:TabablzControl}" BasedOn="{StaticResource MaterialDesignTabablzControlStyle}"/> 
+0

использовать внутри app.xml, чтобы получить материал – Raj