0

ScrollViewerの上にいないときはスクロールバーを非表示に設定し、カーソルを合わせたときにのみ表示します

これは私が使用しているコードです-うまく機能します

<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="False">
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"/>
    </Trigger>

    <Trigger Property="IsMouseOver" Value="True">
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Visible"/>
    </Trigger>
</ControlTemplate.Triggers>

私の質問は、スクロールバーをすぐに表示/非表示にするのではなく、フェードインおよびフェードアウトさせるにはどうすればよいですか?

4

1 に答える 1

1

視覚的な状態を使用します ( http://msdn.microsoft.com/en-us/library/system.windows.visualstatemanager.aspxを参照)。これにより、xaml から直接アニメーション化できます。

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="HideScrollbar">
        <VisualState x:Name="Invisible">                                    
            <Storyboard>
                <DoubleAnimation Storyboard.TargetName="scrollBar" Storyboard.TargetProperty="Opacity"                                              
                    To="0"
                    Duration="0:0:0.25"/>
                </Storyboard>
            </VisualState>
            <VisualState x:Name="Visible">
                <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="scrollBar" Storyboard.TargetProperty="Opacity" 
                        To="1"
                        Duration="0:0:0.25"/>
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
   </VisualStateManager.VisualStateGroups>

これを xaml.cs ファイルの状態変更と組み合わせます

public void OnMouseOver(...)
{
    VisualStateManager.GoToState(this, "Visible", true);
}

public void OnMouseLeave(...)
{
    VisualStateManager.GoToState(this, "Invisible", true);
}
于 2013-09-05T21:30:24.333 に答える