1

私はGridSplitter、ほとんど不透明な を作成しようとしています。マウスオーバーすると、アニメーション化して完全に表示されます。これが私が試したことです:

スタイル:

<Style x:Key="SplitterStyle" TargetType="{x:Type GridSplitter}">
  <Setter Property="Opacity" Value="0.2" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type GridSplitter}">
        <ControlTemplate.Triggers>
          <Trigger Property="IsMouseOver" Value="True">
            <Trigger.EnterActions>
              <BeginStoryboard>
                <Storyboard>
                  <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.2" />
                </Storyboard>
              </BeginStoryboard>
            </Trigger.EnterActions>
            <Trigger.ExitActions>
              <BeginStoryboard>
                <Storyboard>
                  <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:0.3" />
                </Storyboard>
              </BeginStoryboard>
            </Trigger.ExitActions>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

GridSplitter:

<GridSplitter 
    ResizeDirection="Columns"
    Grid.Column="0"
    Background="Red"
    VerticalAlignment="Stretch"
    Width="4"
    Style="{StaticResource SplitterStyle}" />

MSDN を確認したところ、GridSplitter には私が使用しているすべてのプロパティが含まれているため、問題ないように思われますが、明らかに何かを見落としているのではないでしょうか?

編集:

GridSplitter を別の要素に入れることは可能ですか? スタイルを次のように変更しました。

<Style x:Key="SplitterStyle" TargetType="{x:Type Border}">
    <Setter Property="Opacity" Value="0.2" />

    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.2" />
                    </Storyboard>
                </BeginStoryboard>
             </Trigger.EnterActions>
             <Trigger.ExitActions>
                 <BeginStoryboard>
                     <Storyboard>
                         <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:0.3" />
                     </Storyboard>
                 </BeginStoryboard>
             </Trigger.ExitActions>
         </Trigger>
     </Style.Triggers>
 </Style>

次に、代わりに GridSplitter を Border に配置し、スタイルを境界線に適用しました。

<Border
    Style="{StaticResource SplitterStyle}"
    Background="{StaticResource WindowBorderBrush}"
    VerticalAlignment="Stretch"
    Width="4"
    Grid.Column="0"
    HorizontalAlignment="Right">
    <GridSplitter ResizeDirection="Columns" Background="Red" ResizeBehavior="CurrentAndNext"/>
</Border>

ボーダーが大活躍!しかし、現在、GridSplitter はどこにも見つかりません (赤い背景は表示されず、境界線の上にカーソルを置いてもカーソルは変化せず、サイズを変更するためにドラッグするものは何もありません)。どうしてこれなの?

編集:

の幅を指定する必要があることがわかりましたGridSplitterGridSplitterまた、赤色を使用する予定がなかったので、 の背景を透明に変更しました。今、それは表示され、見栄えがしますが、実際には何もサイズ変更されません:P 実際に役立つようにするにはどうすればよいですか?

4

1 に答える 1

2

これが私が最終的に得たもので、うまくいきました:

<Style x:Key="SplitterStyle" TargetType="{x:Type GridSplitter}">
    <Setter Property="Opacity" Value="0.2" />

    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.2" />
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
            <Trigger.ExitActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:0.3" />
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.ExitActions>
        </Trigger>
    </Style.Triggers>
</Style>

<GridSplitter
    Background="{StaticResource WindowBorderBrush}"
    VerticalAlignment="Stretch"
    Width="4"
    Grid.Column="0"
    ResizeDirection="Columns" 
    Style="{StaticResource SplitterStyle}" />

初めて投稿する前に、少なくとも一度はそれを試したと思いましたが、そうではないと思います。とにかく、今はうまく機能しています。

于 2013-07-22T21:40:58.473 に答える