2013-12-05 2 views
0

Я хочу иметь возможность устанавливать разные изображения для разных tabItems для IsSelected = true и IsSelected = false. У меня это много до сих пор:Стили TabControl и использование разных изображений

<TabControl Margin="60,10,96,18" TabStripPlacement="Left"> 
     <TabControl.Resources> 
      <DataTemplate x:Key="tabItemGeneralHeaderTemplate"> 
       <StackPanel Orientation="Horizontal" Margin="0,-3,0,0" Height="51" Width="41"> 
        <Image Name="tabGeneralImg" Source="C:\Users\myName\Documents\Visual Studio 2013\Projects\NetworkTools\NetworkTools\images\sidebar\homeUnselected.png" Width="41" Height="51"></Image> 
       </StackPanel> 
       <DataTemplate.Triggers> 
        <DataTrigger Binding="{Binding Path=IsSelected,RelativeSource={RelativeSource TemplatedParent}}" Value="True"> 
         <Setter TargetName="tabGeneralImg" Property="Source" Value="C:\Users\myName\Documents\Visual Studio 2013\Projects\NetworkTools\NetworkTools\images\sidebar\homeSelected.png"/> 
        </DataTrigger> 
       </DataTemplate.Triggers> 
      </DataTemplate> 
     </TabControl.Resources> 
     <TabItem Name="tabItemGeneral" HeaderTemplate="{StaticResource tabItemGeneralHeaderTemplate}"> 
      <Grid> 

      </Grid> 
     </TabItem> 
     <TabItem Name="tabItemGenera2" HeaderTemplate="{StaticResource tabItemGeneralHeaderTemplate}"> 
      <Grid> 

      </Grid> 
     </TabItem> 
    </TabControl> 

мне было интересно, если бы вы должны создать отдельные стили для каждого TabItem или есть более эффективный способ сделать это?

ответ

0

Лучшим способом сделать это будет UserControl с двумя изображениями. Привяжите видимость одного изображения к обратному видимости другого изображения и привяжите другую видимость к логическому элементу управления, возможно, называемому ShowDisabled. Таким образом, вы просто имеете экземпляр «TwinImage» с правильными нормальными и отключенными изображениями и применяете свой стиль, чтобы перевернуть ShowDisabled и избежать повторения.

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