2015-05-05 6 views
2

Я столкнулся с раздражающей проблемой в разработке WPF (.net 3.5 sp1), которую я предпринимал, который включает показ некоторых вкладок вниз (и повернутых) на моем интерфейсе.WPF Tabcontrol TabItem проблема с отображением на тему Windows Classic

Я развивается на машине Windows 7 с нормальной темы Aero и вкладки выглядят хорошо

enter image description here

Когда мы развернули к клиенту, их машины установлены на «Windows Classic» тему и вкладки показывают, как

enter image description here

так они все «сжато» и не отображать текст. Если я переключу свою машину на Windows Classic, тогда я смогу воспроизвести ее. Я посмотрел на границе с WPF и инспектор мог видеть некоторые значения отступов, которые не должны быть там

enter image description here

Если изменить значения отступов на 0 с помощью WPF Inspector, то язычки начинают показывать еще раз правильно !! Я поставил отступы быть 0 на шаблоне у меня есть для этого, но это, кажется, не имеющего никакого влияния

<TabControl TabStripPlacement="Left" 
      SelectedIndex="{Binding CurrentTabIndex}" 
      ItemsSource="{Binding CurrentPassengers}"> 
    <TabControl.Resources> 
     <Style TargetType="{x:Type TabItem}"> 
      <Setter Property="Padding" 
        Value="0" /> 
      <Setter Property="Margin" 
        Value="0" /> 
      <Setter Property="Width" 
        Value="26.5" /> 
      <Setter Property="HeaderTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <ContentPresenter Content="{Binding NameInGDSFormat}"> 
          <ContentPresenter.LayoutTransform> 
           <RotateTransform Angle="-90" /> 
          </ContentPresenter.LayoutTransform> 
         </ContentPresenter> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </TabControl.Resources> 
    <TabControl.ContentTemplate> 
     <!-- Lots of stuff in here for the Content Template --> 
    </TabControl.ContentTemplate> 
</TabControl> 

Я попытался установить различные шаблоны, отступы на различных элементы, но ничего, кажется, изменения - так кто-нибудь знает, как я могу это исправить?

EDIT: Если я удаляю установленную «ширину», то это действительно отображается в Windows Classic, но вкладка очень WIDE.

enter image description here

ответ

1

OK - так что в конце концов мне пришлось создать целый новый ControlTemplate, чтобы исправить эту проблему :)

В принципе я нашел следующее в оригинальном классическом ControlTemplate

<ContentPresenter RecognizesAccessKey="True" 
    Content="{TemplateBindingReaderedContentControl.Header}" 
    ContentTemplate="{TemplateBinding HeaderedContentControl.HeaderTemplate}" 
    ContentStringFormat="{TemplateBinding HeaderedContentControl.HeaderStringFormat}" 
    ContentSource="Header" 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Stretch" 
    Margin="{TemplateBinding Control.Padding}" 
    SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" /> 

Поэтому кто-то подумал, что неплохо было бы привязать маржу к прокладке, а затем, когда вы поместите вкладки слева (или справа), добавленный шаблон добавляется

<MultiTrigger> 
     <MultiTrigger.Conditions> 
      <Condition Property="Selector.IsSelected"> 
       <Condition.Value> 
        <s:Boolean>True</s:Boolean> 
       </Condition.Value> 
      </Condition> 
      <Condition Property="TabItem.TabStripPlacement" Value="{x:Static Dock.Left}"/> 
     </MultiTrigger.Conditions> 
     <Setter Property="Control.Padding"> 
      <Setter.Value> 
       <Thickness>11,2,14,2</Thickness> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="FrameworkElement.Margin"> 
      <Setter.Value> 
       <Thickness>-2,-2,-2,-2</Thickness> 
      </Setter.Value> 
     </Setter> 
    </MultiTrigger> 

Таким образом, они устанавливают Padding на 11,2,14,2 (значения, которые я видел в WPF Inspector).

Так что мне пришлось переопределить шаблон, установить маржу что-то дельное, а затем установить отступы более реалистичных значения, которые могли бы обрабатывать выступающий контент, вращаясь на 270 градусов :)

Надеется, что это помогает кто-то другой, кто приходит через это !!

Смежные вопросы