2010-09-13 50 views
0

我在我的应用程序中有一个DataGrid,它有一个带有文本块和一个按钮的已定义CellTemplate的列。Silverlight中DataTemplate元素的故事板

我想仅在悬停此特定单元格时显示按钮。我怎样才能做到这一点?

在此先感谢。

回答

0

这可能是可能是为了脚本分镜模板引用其他模板项目,但我会太惊恐如果创建单元格的内容为用户控件(与文本框来尝试这种方式:)

和按钮),那么动画故事板就可以轻松地为那个控件创作,并通过附加的ControlStoryboardAction行为运行(如果需要示例,我可以在几分钟内掀起一个控件)。

文本框等的控件属性需要公开这两个值和更改(例如通过将它们实现为INotifyPropertyChanged属性或甚至DependencyProperties),但是您可以简单地将CellTemplate绑定到子控件而不是TextBox。

希望这会有所帮助。

+0

我认为你是对的,我会用适当的故事板进行控制。 – Walkor 2010-09-15 07:26:12

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> 
+0

触发器在Silverlight中不存在。 – Walkor 2010-09-15 07:25:36