我希望能够为IsSelected=true和IsSelected=false的不同tabItems设置不同的图像。到目前为止,我有这么多:
<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:UsersmyNameDocumentsVisual Studio 2013ProjectsNetworkToolsNetworkToolsimagessidebarhomeUnselected.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:UsersmyNameDocumentsVisual Studio 2013ProjectsNetworkToolsNetworkToolsimagessidebarhomeSelected.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创建单独的样式,或者有更有效的方法吗?
更好的方法是使用具有两个图像的UserControl
。将一个图像的可见性绑定为另一个图像可见性的倒数,并将另一个可见性绑定到控件上的布尔值,可能称为ShowDisabled
。这样,您只需拥有一个具有正确正常和禁用图像的"TwinImage"实例,并应用您的样式来翻转ShowDisabled
,避免重复。