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.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>
于 2013-05-11T02:51:53.047 に答える