Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xaml 将数据触发器与GridSplitter一起使用_Xaml - Fatal编程技术网

Xaml 将数据触发器与GridSplitter一起使用

Xaml 将数据触发器与GridSplitter一起使用,xaml,Xaml,我试图创建一个基本不透明的GridSplitter,然后在鼠标上方设置动画,使其完全可见。以下是我尝试过的: 风格: <Style x:Key="SplitterStyle" TargetType="{x:Type GridSplitter}"> <Setter Property="Opacity" Value="0.2" /> <Setter Property="Template"> <Setter.Value> &l

我试图创建一个基本不透明的
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>
我检查了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
    Style="{StaticResource SplitterStyle}"
    Background="{StaticResource WindowBorderBrush}"
    VerticalAlignment="Stretch"
    Width="4"
    Grid.Column="0"
    HorizontalAlignment="Right">
    <GridSplitter ResizeDirection="Columns" Background="Red" ResizeBehavior="CurrentAndNext"/>
</Border>

边境工程伟大!但是现在,找不到GridSplitter(红色背景没有显示,光标在边界上悬停时没有变化,也没有任何东西可以拖动来调整大小)。为什么会这样

编辑:


好的,我发现我必须为
GridSplitter
指定一个宽度。另外,我将
GridSplitter
的背景更改为透明,因为我从未打算使用红色。现在,它显示出来并且看起来很棒,但实际上它仍然没有调整任何大小:P如何使它真正有用?

这就是我最终得到的结果,它起到了作用:

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


我想我在第一次发帖之前至少试过一次,但我想不会。不管怎么说,现在效果很好

<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}" />