1

WpfのタブコントロールにHotTrackingを実装しようとしています。私の理解では、これはwpf tabcontrolに含まれていなかったので、使用したいと思います。

私の利益のためにHotTracking=選択されていないタブの上にマウスを置くと、タブの色が変わります(通常は選択されたタブと選択されていないタブの間の色に変わります)

私は自分の知識とこの投稿を少し使用しました。XAMLでborderにMouseOverイベント/トリガーを設定する方法は?しかし、私はそれを機能させることができないようです。

これがすべてです。

<Window x:Class="TestingWpF.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="1024" Width="1280">
<Window.Resources>
    <Style TargetType="{x:Type TabItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TabItem}">
                    <Grid>
                        <Border 
                            Name="Border"
                            CornerRadius="6,6,0,0" >
                            <ContentPresenter x:Name="ContentSite"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Center"
                            ContentSource="Header"
                            Margin="12,2,12,2"/>
                        </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="Border" Property="Background" Value="LightBlue" />
                        </Trigger>
                        <Trigger Property="IsSelected" Value="False">
                            <Setter TargetName="Border" Property="Background" Value="AliceBlue" />
                        </Trigger>
                        <Trigger Property=" Border.IsMouseOver" Value="True">
                            <Setter Property="Border.Background" Value="Green" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>


<Grid>
    <TabControl Grid.ColumnSpan="2" Grid.RowSpan="2" Height="309" HorizontalAlignment="Left" Name="tabControl1" VerticalAlignment="Top" Width="781" Padding="0">
        <TabItem Header="tabItem1" >

        </TabItem>
        <TabItem Header="tabItem2" >

            </TabItem>
     </TabControl>
    </Grid>
</Window>
4

1 に答える 1

2

私はそれを理解しました、私の問題はこのセクションでした

<Trigger Property="IsSelected" Value="True">
   <Setter TargetName="Border" Property="Background" Value="LightBlue" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
  <Setter TargetName="Border" Property="Background" Value="AliceBlue" />
</Trigger>
<Trigger Property=" Border.IsMouseOver" Value="True">
//Change this line 
//<Setter Property="Border.Background" Value="Green" />    
//To This
  <Setter TargetName="Border" Property="Background" Value="Green" />
</Trigger>

最後のトリガーは機能していませんでした。そして、あなたが気づいたら、私はセッターで異なるプロパティを使用しました。他の2つと一致するように変更しましたが、機能しました

于 2012-05-14T13:20:11.677 に答える