设置单元格颜色时Wpf Datagrid虚拟化问题

设置单元格颜色时Wpf Datagrid虚拟化问题,wpf,datagrid,virtualization,toolkit,Wpf,Datagrid,Virtualization,Toolkit,我正在使用wpf工具包datagrid,其中有一列填充了切换按钮。使用下面的样式,如果选择了切换按钮以及鼠标悬停,我将更改背景色。不幸的是,如果我启用了虚拟化,当我在单元格中选择一个切换按钮并在网格中向下滚动时,我会发现其他单元格的背景也发生了变化。我认为这是虚拟化在我滚动时如何重用单元的一个缺陷。有没有建议绕过这个问题,仍然使用虚拟化 <Style TargetType="{x:Type ToggleButton}">

我正在使用wpf工具包datagrid,其中有一列填充了切换按钮。使用下面的样式,如果选择了切换按钮以及鼠标悬停,我将更改背景色。不幸的是,如果我启用了虚拟化,当我在单元格中选择一个切换按钮并在网格中向下滚动时,我会发现其他单元格的背景也发生了变化。我认为这是虚拟化在我滚动时如何重用单元的一个缺陷。有没有建议绕过这个问题,仍然使用虚拟化

                <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>

通过绑定样式所针对的togglebutton的IsChecked属性,我已经能够绕过这个问题。这使我能够启用虚拟化,并使每个单元格中模板切换按钮的背景色与它应该的颜色保持正确同步

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