C# WPF DataGrid在我打开第二个窗口时未显示所选项目

C# WPF DataGrid在我打开第二个窗口时未显示所选项目,c#,wpf,wpfdatagrid,C#,Wpf,Wpfdatagrid,我在WPF datagrid上用鼠标右键单击ShowDialog()打开一个无边界窗口。目的是让用户有机会将所选项目添加到列表中。当对话框窗口打开DataGrid中的选定项时,松开选定的“视觉效果”(在本例中为默认的蓝色突出显示),直到对话框关闭。我如何绕过这个问题,让用户仍然有一个关于他们选择了什么的视觉线索 打开对话框的代码= private void MusicLibrary_MouseRightButtonUp(object sender, MouseButtonEventArgs e)

我在WPF datagrid上用鼠标右键单击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;


        }


    }
private void MusicLibrary\u MouseRightButtonUp(对象发送器,MouseButtonEventArgs e)
{
Point mousePoint=this.PointToScreen(Mouse.GetPosition(this));
playlirclick选项=新建playlirclick();
option.WindowStartupLocation=System.Windows.WindowStartupLocation.Manual;
选项。高度=150;
选项。宽度=100;
option.Left=mousePoint.X;
option.Top=mousePoint.Y;
option.ShowDialog();
//获取所选选项,并根据需要将其添加到播放列表中
开关(option.choice)
{
案例右键单击选择。添加播放列表:
IList Items=MusicLibrary.SelectedItems;
列表相册=Items.Cast().ToList();
foreach(相册中的MyAlbum a)
{
添加(a);
}
打破
}
}

当数据网格具有用户焦点时,
DataGrid
将仅高亮显示蓝色,否则它将使用不同的笔刷(通常为浅灰色),因此当您打开对话框时,
DataGrid
将失去焦点,“蓝色”笔刷将被删除

当数据网格被聚焦时,它使用系统颜色。HighlightTextBrushKey,当未聚焦时,它使用系统颜色。不活动选择HighlightBrushKey

<DataGrid>
    <DataGrid.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
    </DataGrid.Resources>
</DataGrid>
因此,您可以尝试将
SystemColors.inactiveselection highlightbrushkey
设置为
SystemColors.HighlightColor
,这将在打开对话框时使其保持蓝色

例如:

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

您还可以在其旁边添加以下内容以保留前景: