Silverlight中DataTemplate元素的故事板

时间:2010-09-13 14:26:02

标签: silverlight datatemplate storyboard

我的应用程序中有一个DataGrid,它有一个定义了CellTemplate的列,其中包含一个文本块和一个按钮。

我只想在悬停此特定单元格时显示该按钮。我怎样才能实现这一目标?

提前致谢。

2 个答案:

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