所有
我有一个WPF数据网格,其中有一个模板列定义如下:
<DataGridTemplateColumn Width="105">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="35">
<Button Style="{StaticResource tableButtonStyle}">
<ContentControl/>
</Button>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
按钮样式(仅当用户将鼠标移动到特定数据网格行时显示按钮)如下所示:
<!-- Disappearing button for tables -->
<Style x:Key="tableButtonStyle" TargetType="Button" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridRow}},Path=IsMouseOver}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
我想设置数据网格的高度,以便在隐藏按钮时为“X”单位高,或者在显示按钮时“Y”单位为高。这可以在xaml标记中实现吗?
提前致谢!
答案 0 :(得分:0)
我不知道在XAML中是否有办法做到这一点(我不知道因为我是xaml的新手)。
但是我会用代码隐藏来做到这一点。我会使用花哨的动画,例如:
private Storyboard sb=new StoryBoard();
private DoubleAnimation da=new DoubleAnimation();
da.From=datagrid.actualHeight;
da.to=x;
da.Duration = new Duration(TimeSpan.FromSeconds(0.5));
Storyboard.SetTargetProperty(da, new PropertyPath(yourDatagrid.HeigthProperty));
sb.Children.Add(da);
yourDatagrid.BeginStoryboard(sb);
也许你可以在ClickEvent中获得它。 希望这有帮助!