将滑动按钮面板添加到DataGrid行/单元格

时间:2018-06-17 21:10:04

标签: c# wpf xaml wpfdatagrid

我想将动画添加到我拥有的DataGrid中。基本上,当用户从右侧(最后一个单元格)选择一行时,两个按钮将滑入视图。当鼠标离开行时,按钮会向后滑动。

现在我有了它,所以按钮出现在RowDetailsTemplate中(并且让它在鼠标离开行时细节消失)。这是功能性的,但希望得到一点点发烧友。这是我目前的实施:

<Style TargetType="DataGridRow">
  <Style.Triggers>
    <EventTrigger RoutedEvent="DataGridRow.MouseDown">
      <BeginStoryBoard>
        <Storyboard>
          <DoubleAnimation
            Storyboard.TargetName="AckButton"
            Storyboard.TargetProperty="(Button.Width)"
            To="100" Duration="0:0:3"/>

          <DoubleAnimation
            Storyboard.TargetName="RemButton"
            Storyboard.TargetProperty="(Button.Width)"
            To="100" Duration="0:0:3"/>
        </Storyboard>
      </BeginStoryboard>
   </EventTrigger>
 </Style.Triggers>

相反,我想做更多的事情:

 "proxy": "http://localhost:5001"

我认为我失败的地方是我希望将这些幻灯片放到最后一个单元格中(大于它需要基于数据的大小,因此有空间)。

我是否应该查看DataGridTemplateColumn以创建我自己的自定义列,该列适应左侧水平对齐的文本和右侧对齐的一个或两个按钮?或者我应该创建两个额外的列,每个按钮一个?

我在列方法中看到的唯一问题是我不希望通常显示这些列,并且当按钮显示时,我想隐藏它们是单独列的事实。

我正在研究的另一种方法实际上是将按钮绘制为矩形,基本上在行的顶部有一个叠加层,但我认为这是一个更复杂的方法。但也许不是吗?

感谢您的帮助。更喜欢指向可以提供帮助的API,我不是在寻找有人为我编写此代码;)

1 个答案:

答案 0 :(得分:0)

啊,我刚刚为DataGridTemplateColumn找到了这个例子:

<DataGridTemplateColumn Header="My Item">
 <DataGridTemplateColumn.CellTemplate>
  <DataTemplate>
      <StackPanel Orientation="Horizontal">
          <Image Source="{Binding MyImage}" />
          <TextBlock Text="{Binding MyText}" />
      </StackPanel>
  </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

不幸的是,现在工作的开发环境已经崩溃,所以我无法测试它,但看起来我可以使用按钮创建一个面板,以0宽度开始它们的大小,然后设置宽度的动画单击,然后当鼠标离开时,将它们设置为回到宽度0。