我的应用程序中有一个DataGrid,它有一个定义了CellTemplate的列,其中包含一个文本块和一个按钮。
我只想在悬停此特定单元格时显示该按钮。我怎样才能实现这一目标?
提前致谢。
答案 0 :(得分:0)
可能会编写一个引用其他模板化项目的模板化故事板的脚本,但我会害怕以这种方式尝试:)
如果您将单元格内容创建为用户控件(带有文本框和按钮),则可以轻松地为该控件创建动画故事板,并通过附加的ControlStoryboardAction行为运行(如果您需要,我可以在几分钟内完成一个动作例子)。
文本框等的控件属性需要公开值和更改(例如,通过将它们实现为INotifyPropertyChanged属性甚至DependencyProperties),但是您可以简单地将CellTemplate绑定到子控件而不是TextBox。
希望这有帮助。
答案 1 :(得分:0)
这是一个使用触发器的解决方案。
<DataGrid>
<DataGrid.Items>
<System:String>hello</System:String>
<System:String>world</System:String>
</DataGrid.Items>
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid x:Name="MyGrid" Background="Transparent">
<StackPanel>
<TextBlock Text="{Binding}"/>
<Button x:Name="MyButton" Visibility="Hidden" Content="{Binding}"/>
</StackPanel>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True" SourceName="MyGrid">
<Trigger.Setters>
<Setter TargetName="MyButton" Property="Visibility" Value="Visible"/>
</Trigger.Setters>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>