7

我有以下代码:

<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

在编译期间。为什么?

4

3 回答 3

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>
于 2011-05-16T07:44:43.460 回答
4

TabItem.Triggers集合继承自 FrameworkElement,并且只能包含EventTriggers。你所拥有的是无效的。

触发器、MultiTriggers、DataTriggers 和 MultiDataTriggers 只能在Style.TriggersControlTemplate.TriggersDataTemplate.Triggers集合中使用。

于 2011-05-15T16:06:15.317 回答
0

你需要使用 TabItem.IsSelected 吗?

<Trigger Property="TabItem.IsSelected" Value="True">
  <Setter TargetName="tabGeneralImg" Property="Source" Value="Image/tabGeneralActive.png">
  </Setter>
</Trigger>
于 2011-05-15T15:40:23.420 回答