1

我在 WPF 数据网格上单击鼠标右键时使用 ShowDialog() 打开一个无边框窗口。目的是让用户有机会将选定的项目添加到列表中。当对话框窗口打开 DataGrid 中的选定项目时,松开选定的“视觉效果”(在本例中为默认的蓝色突出显示),直到对话框关闭。我该如何解决这个问题,以便用户仍然可以直观地了解他们选择的内容。

打开对话框的代码 =

private void MusicLibrary_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
    {
        Point mousePoint = this.PointToScreen(Mouse.GetPosition(this));
        PlayListRClick option = new PlayListRClick();
        option.WindowStartupLocation = System.Windows.WindowStartupLocation.Manual;
        option.Height = 150;
        option.Width = 100;
        option.Left = mousePoint.X;
        option.Top = mousePoint.Y;
        option.ShowDialog();


        //Get the selected option and add itmes to playlist as needed
        switch (option.choice)
        {
            case RightClickChoice.AddToPlayList:
                IList Items = MusicLibrary.SelectedItems;
                List<MyAlbum> albums = Items.Cast<MyAlbum>().ToList();
                foreach (MyAlbum a in albums)
                {
                    PlayListOb.Add(a);

                }
                break;


        }


    }
4

1 回答 1

3

仅当DataGrid它具有用户焦点时才会突出显示蓝色,否则它会使用不同的画笔(通常是 LightGray),因此当您打开对话框时DataGrid会失去焦点并移除“蓝色”画笔。

聚焦时DataGrid使用SystemColors.HighlightTextBrushKey,未聚焦时使用SystemColors.InactiveSelectionHighlightBrushKey

因此,您可以尝试将 设置SystemColors.InactiveSelectionHighlightBrushKeySystemColors.HighlightColor,当您打开对话框时,它应该保持蓝色。

例子:

<DataGrid>
    <DataGrid.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
    </DataGrid.Resources>
</DataGrid>

编辑:

对于.NET4.0 及以下版本,您可能必须使用SystemColors.ControlBrushKey而不是SystemColors.InactiveSelectionHighlightBrushKey

<DataGrid>
    <DataGrid.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
    </DataGrid.Resources>
</DataGrid>
于 2013-05-11T02:51:53.047 回答