如果仅在选择了行时才能在DataGridTemplateColumn
中显示按钮?我试过这个,但当然没有IsSelected
可供我使用。在绑定行的实体上拥有IsSelected
属性是没有意义的,即便如此,我也不希望必须将DataGrid
与我的模型紧密联系起来。无论如何,接口可以自己处理吗?
这就是我所拥有的:
<sdk:DataGrid Name="_categorySummaryDataGrid"
MinHeight="200"
ItemsSource="{Binding ElementName=_userControl, Path=CategorySummaries}"
AutoGenerateColumns="False" RowDetailsVisibilityMode="VisibleWhenSelected">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn x:Name="_nameColumn" Binding="{Binding Path=Name}" Header="Name" Width="Auto" IsReadOnly="True" />
<sdk:DataGridTextColumn x:Name="_descriptionColumn" Binding="{Binding Path=Description}" Header="Description" Width="*" IsReadOnly="True" />
<sdk:DataGridTemplateColumn x:Name="_detailsColumn" Width="Auto">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="..." ToolTipService.ToolTip="View Category Details"
Visibility="{Binding Path=IsSelected, Converter={StaticResource BooleanToVisibility}}"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
出于设计原因,我希望按钮仅在选择包含它的行时显示。并且,如果可能的话,我希望它在行悬停时以不同的方式显示。
我希望Silverlight和WPF似乎有更多限制。我希望这些事情是可能的。谢谢。 :)
修改
我没有,也不会得到Expression Blend。谢谢,就是这样。
答案 0 :(得分:1)
每当你想要改变Silverlight中任何东西的视觉外观时,你必须考虑VisualStateManager。要更改Selected DataGrid单元格的外观,您需要利用VSM的奇迹。通过编辑DataGridColumn.CellStyle的“Selected”状态,您可以更改所选网格单元格的外观。
基本上,整个教程是关于为DataGridColumn获取CellStyle.Template并向Selected State添加动画。