“数据网格未选定”行显示为选定状态



我有一个基于带有触发器的样式的 WPF 数据网格:

<Style TargetType="DataGridCell" x:Key="DataGridCellStyle">
    <Style.Triggers>
        <Trigger Property="IsSelected"
                    Value="True">
            <Setter Property="Background" Value="Blue" />
            <Setter Property="BorderBrush" Value="Blue" />
        </Trigger>
    </Style.Triggers>
</Style>

问题的简短描述:在一种情况下,更改所选内容后,"未选择预览"行仍标有"蓝色",并显示为选中状态。

更详细:当我选择第 X 行时,第 X 行用蓝色着色。 当我选择不同的行时,第 X 行中的颜色会按预期更改回默认值。

除了一种情况:1.我站在X行上,它被选中了。2.我正在用Y行(来自代码(交换它的位置。3. 交换后,X 行现在仍处于选中状态。4.我要换一行,新行被选中,X行不再被选中,但它的背景仍然是蓝色的。

我不确定它可以添加任何额外的信息,但我正在添加交换代码的相关部分:*_commands 绑定到 dataGrid 的 ItemsSource

            Command tmp = _commands[indx1];
        _commands[indx1] = _commands[indx2];
        _commands[indx2] = tmp;
        Commands[indx + 1].IsSelected = true;
        Commands[indx].IsSelected = false;

        private ObservableCollection<CustomCommand> _commands = new ObservableCollection<CustomCommand>();
    public ObservableCollection<CustomCommand> Commands
    {
        get
        {
            return _commands;
        }
        set
        {
            _commands = value;
            NotifyPropertyChanged("Commands");
        }
    }

还有一件事 - 这只发生在一些计算机中,而在另一些计算机中,它的行为符合预期,颜色被设置回默认值。

谢谢丹娜。

我已经找到了解决方案,我添加了一个相反的触发器 当 IsSelected=false 时:

                            <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Background" Value="Blue" />
                                <Setter Property="BorderBrush" Value="Blue" />
                            </Trigger>
                            <Trigger Property="IsSelected"  Value="False">
                                <Setter Property="Background" Value="Transparent" />
                                <Setter Property="BorderBrush" Value="Transparent" />
                            </Trigger>

相关内容

  • 没有找到相关文章

最新更新