【发布时间】:2015-02-06 00:47:02
【问题描述】:
我正在尝试识别 DataGrid 中每个单元格上的 MouseLeftButtonDown,但是有两件事阻止了我:
- DataGridCell 不会触发点击事件
- 使用网格(带有单击事件)作为子元素不会填充单元格,因此只能在其内容上单击,它会自动调整大小以适应。
这是我的单元格模板:
<DataTemplate x:Key="...">
<Grid MouseLeftButtonDown="..."
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="24" Height="24"
Source="..."/>
</Grid>
</DataTemplate>
行高/列宽意味着单元格的高度为 64 像素,宽度为 80 像素,并且可以调整大小,因此内部的 24x24 图像是可能较大的单元格中唯一可点击的部分。 DataGridCell 本身的样式如下:
<Style TargetType="data:DataGridCell" x:Key="...">
<Setter Property="Height" Value="64"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
</Style>
理想情况下,网格应该扩展到包含单元格的大小。但是无论我将对齐属性分配给拉伸多少次,它都不会。您可以通过设置 Grid 的背景来查看。它符合其内容,仅此而已。
我已经设法通过在第 0 列和第 2 列中放置透明 Canvas 元素并设置列 maxwidth 来破解一个解决方案,但我觉得必须有更好的方法。
【问题讨论】:
标签: wpf silverlight datagrid silverlight-4.0