当我打开第二个窗口时,WPF DataGrid不显示所选项目
本文关键字:DataGrid 显示 项目 选项 WPF 第二个 窗口 | 更新日期: 2023-09-27 18:13:09
我用鼠标右键单击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;
}
}
DataGrid
只有在具有用户焦点时才会高亮显示蓝色,否则它会使用不同的笔刷(通常为LightGray(,因此当您打开对话框时,DataGrid
会失去焦点,"蓝色"笔刷将被移除。
当DataGrid
聚焦时,它使用SystemColors.HighlightTextBrushKey
,当未聚焦时,使用SystemColors.InactiveSelectionHighlightBrushKey
因此,您可以尝试将SystemColors.InactiveSelectionHighlightBrushKey
设置为SystemColors.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>