Wpf Datagrid Virtualization Проблема при настройке цветов ячеек - PullRequest
1 голос
/ 03 апреля 2009

Я работаю с сеткой данных wpf toolkit и у меня есть столбец, который заполнен кнопками переключения. Используя стиль ниже, я изменяю цвет фона, если выбрана кнопка переключения, а также при наведении мыши. К сожалению, если у меня включена виртуализация, когда я сделаю выбор переключателя в ячейке и прокручиваю вниз в сетке, я найду другие ячейки, у которых также изменился фон. Я предполагаю, что это ошибка в том, как виртуализация использует ячейки во время прокрутки. Любое предложение обойти это и по-прежнему использовать виртуализацию?

                <Style TargetType="{x:Type ToggleButton}">
                <Setter Property="Control.Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ToggleButton}">
                                <TextBlock x:Name="Tb" Tag="{TemplateBinding Property=Tag}" Padding="{TemplateBinding Property=Padding}" Text="{TemplateBinding Property=Content}" >
                                </TextBlock>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter TargetName="Tb" Property="Background" Value="{StaticResource HoverRed}" />
                                </Trigger>
                                <Trigger Property="IsChecked" Value="True">
                                    <Setter TargetName="Tb" Property="Background" Value="{StaticResource SelectYellow}" />
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

1 Ответ

0 голосов
/ 04 апреля 2009

Мне удалось обойти эту проблему, привязав свойство IsChecked к кнопке-переключателю, на которую нацелен стиль. Это позволяет мне включать виртуализацию и сохранять цвет фона для шаблонной кнопки переключения в каждой ячейке в соответствии с тем, что и должно быть.

                    <ToggleButton Tag="button" IsChecked="{Binding Path=Selected,Mode=TwoWay}" FocusVisualStyle="{x:Null}" Content="{Binding Path=MarkerName,Mode=OneWay}">
                </ToggleButton>
...