我有以下代码:
<TabItem Name="tabItemGeneral">
<TabItem.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="tabGeneralImg" Property="Source" Value="Image/tabGeneralActive.png"></Setter>
</Trigger>
</TabItem.Triggers>
<TabItem.Header>
<StackPanel Orientation="Horizontal" Margin="0,-3,0,0">
<Image Name="tabGeneralImg" Source="Images/tabGeneral.png" Width="11" Height="11"></Image>
<Label Name="tabGeneralLbl" Content="General"></Label>
</StackPanel>
</TabItem.Header>
<Grid>
<!-- ... -->
</Grid>
</TabItem>
但是我明白了 错误1“IsSelected”成员无效,因为它没有合格的类型名称。 C:\ MyNET \ bluetooth \ iLockWPF \ iLock \ iLock \ MainWindow.xaml 63 60 iLock
编译期间。为什么呢?
答案 0 :(得分:9)
正如CodeNaked所说,它无法直接在元素上使用属性触发器。你应该使用HeaderTemplate。
<TabControl>
<TabControl.Resources>
<DataTemplate x:Key="tabItemGeneralHeaderTemplate">
<StackPanel Orientation="Horizontal"
Margin="0,-3,0,0">
<Image Name="tabGeneralImg"
Source="Image/tabGeneralActive.png"
Width="11"
Height="11"/>
<Label Name="tabGeneralLbl"
Content="General"/>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsSelected
,RelativeSource={RelativeSource TemplatedParent}}"
Value="True">
<Setter TargetName="tabGeneralImg"
Property="Source"
Value="Images/tabGeneral.png"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</TabControl.Resources>
<TabItem Name="tabItemGeneral"
HeaderTemplate="{StaticResource tabItemGeneralHeaderTemplate}">
<Grid>
...
</Grid>
</TabItem>
</TabControl>
答案 1 :(得分:4)
TabItem.Triggers集合继承自FrameworkElement,只能包含EventTriggers。你拥有的是无效的。
触发器,MultiTriggers,DataTriggers和MultiDataTriggers只能在Style.Triggers,ControlTemplate.Triggers或DataTemplate.Triggers集合中使用。
答案 2 :(得分:0)
您需要使用TabItem.IsSelected吗?
<Trigger Property="TabItem.IsSelected" Value="True">
<Setter TargetName="tabGeneralImg" Property="Source" Value="Image/tabGeneralActive.png">
</Setter>
</Trigger>