Silverlight Datagrid: настройка фона ячейки шаблона с пользовательским поведением - PullRequest
0 голосов
/ 24 октября 2010

У меня есть пользовательский DataGrid, смешанный с DataGridTemplateColumns, и пользовательское поведение, полученное из этого ответа Сетка данных Silverlight: выделение всего столбца при сортировке этого столбца . Проблема, с которой я сталкиваюсь, заключается в том, что любые ячейки DataGridTemplateColumn не улавливают «выделение». Шаблон ячейки, используемый для пользовательских столбцов, имеет структуру, показанную ниже. У кого-нибудь есть идеи, почему подсветка фона не применяется? Некоторое время я ломал голову над этим.

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

1 Ответ

0 голосов
/ 26 октября 2010

Чтобы решить эту проблему, мне пришлось создать string DependencyProperty с именем Background для пользовательского класса столбца, который наследуется от 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>
...