0

我有一个自定义DataGrid混合DataGridTemplateColumns并从这个答案Silverlight Datagrid: Highlight an entire column when that column is sorted派生的自定义行为。我遇到的问题是任何 DataGridTemplateColumn 的单元格都没有选择“突出显示”。用于自定义列的单元格模板具有如下所示的结构。任何人都知道为什么没有应用背景突出显示?我一直在为这个问题绞尽脑汁。

<DataTemplate>
    <Grid>
        <Border VerticalAlignment='Stretch' Margin='1' Background='Transparent'>
            <TextBlock VerticalAlignment='Center' Text='{Binding Path=Variable}' />
        </Border>
    </Grid>
</DataTemplate>
4

1 回答 1

0

为了解决这个问题,我最终需要string DependencyPropertyBackground继承自DataGridTemplateColumn. 此外,在行为中,我必须检查列的类型。

之前,我只是将 CollectionChanged 事件处理程序中的列设置为 DataGridBoundColumn。现在我检查它是否真的是那种类型,或者它是否是 DataGridTemplateColumn。DataGridTemplateColumn 有不同的方式来检查绑定路径,区别如下图

DataGridBoundColumn:boundColumn.Binding.Path.Path DataGridTemplateColumn:boundColumn.SortMemberPath

我必须做的最后一个调整是改变它的结构DataTemplate,使它现在看起来像下面,基本上以不同的方式设置颜色。

<DataTemplate>
    <Grid>
        <Border>
            <Border.Background>
                <SolidColorBrush Color='{0}' />
            </Border.Background>
            <TextBlock VerticalAlignment='Center' Text='{Binding Path=Variable}' />
        </Border>
    </Grid>
</DataTemplate>
于 2010-10-25T20:35:21.683 回答