【问题标题】:IsSelected property of WPF TabItemWPF TabItem 的 IsSelected 属性
【发布时间】:2013-12-30 02:32:08
【问题描述】:

我有以下代码:

<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

在编译期间。为什么?

【问题讨论】:

    标签: wpf tabitem


    【解决方案1】:

    正如 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>
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        你需要使用 TabItem.IsSelected 吗?

        <Trigger Property="TabItem.IsSelected" Value="True">
          <Setter TargetName="tabGeneralImg" Property="Source" Value="Image/tabGeneralActive.png">
          </Setter>
        </Trigger>
        

        【讨论】:

        • 它说“'Source' 成员无效,因为它没有合格的类型名称。”现在
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-22
        • 1970-01-01
        • 2014-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多