【发布时间】:2010-09-15 00:03:51
【问题描述】:
我的应用程序中有一个 DataGrid,它有一个定义了 CellTemplate 的列,其中有一个文本块和一个按钮。
我只想在悬停此特定单元格时显示按钮。我怎样才能做到这一点?
提前致谢。
【问题讨论】:
标签: silverlight datatemplate storyboard
我的应用程序中有一个 DataGrid,它有一个定义了 CellTemplate 的列,其中有一个文本块和一个按钮。
我只想在悬停此特定单元格时显示按钮。我怎样才能做到这一点?
提前致谢。
【问题讨论】:
标签: silverlight datatemplate storyboard
可能会编写一个引用其他模板项目的模板故事板脚本,但我会害怕那样尝试:)
如果您将单元格内容创建为用户控件(带有文本框和按钮),则可以轻松地为该控件创建动画故事板并通过附加的 ControlStoryboardAction 行为运行(如果您需要,我可以在几分钟内完成一个示例)。
文本框等的控件属性需要公开值和更改(例如,通过将它们实现为 INotifyPropertyChanged 属性甚至 DependencyProperties),但是您可以简单地将 CellTemplate 绑定到子控件而不是 TextBox。
希望这会有所帮助。
【讨论】:
这是一个使用触发器的解决方案。
<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>
【讨论】: