mirror of
https://github.com/Hofknecht/SystemTrayMenu.git
synced 2024-09-30 09:06:32 +13:00
Change SelectionMode to Single for ListView
This commit is contained in:
parent
fe2ab9b4ff
commit
f73a674400
5 changed files with 42 additions and 16 deletions
|
@ -163,7 +163,13 @@ namespace SystemTrayMenu.Handler
|
|||
}
|
||||
}
|
||||
|
||||
internal void DeselectFoccussedRow() => focussedMenu?.GetDataGridView().SelectedItems.Remove(focussedRow);
|
||||
internal void DeselectFoccussedRow()
|
||||
{
|
||||
if (focussedMenu != null)
|
||||
{
|
||||
focussedMenu.SelectedItem = null;
|
||||
}
|
||||
}
|
||||
|
||||
internal void MouseSelect(Menu menu, ListViewItemData itemData)
|
||||
{
|
||||
|
@ -347,7 +353,10 @@ namespace SystemTrayMenu.Handler
|
|||
|
||||
if (doClearOldSelection)
|
||||
{
|
||||
menuBefore?.GetDataGridView().SelectedItems.Remove(rowBefore);
|
||||
if (focussedMenu != null)
|
||||
{
|
||||
focussedMenu.SelectedItem = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -414,7 +423,7 @@ namespace SystemTrayMenu.Handler
|
|||
private void Select(ListView dgv, ListViewItemData itemData)
|
||||
{
|
||||
focussedRow = itemData;
|
||||
dgv.SelectedItems.Add(itemData);
|
||||
dgv.SelectedItem = itemData;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -390,7 +390,7 @@ namespace SystemTrayMenu.Business
|
|||
Menu? menu = mainMenu;
|
||||
if (menu != null)
|
||||
{
|
||||
menu.GetDataGridView().SelectedItem = null;
|
||||
menu.SelectedItem = null;
|
||||
|
||||
menu.RelocateOnNextShow = true;
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@ namespace SystemTrayMenu.Handler
|
|||
using System;
|
||||
using System.Windows.Threading;
|
||||
using SystemTrayMenu.DataClasses;
|
||||
using SystemTrayMenu.Utilities;
|
||||
using static SystemTrayMenu.UserInterface.Menu;
|
||||
using ListView = System.Windows.Controls.ListView;
|
||||
using Menu = SystemTrayMenu.UserInterface.Menu;
|
||||
|
@ -64,13 +63,13 @@ namespace SystemTrayMenu.Handler
|
|||
timerStartLoad.Start();
|
||||
}
|
||||
|
||||
internal void MouseLeave(ListView dgv)
|
||||
internal void MouseLeave(Menu menu)
|
||||
{
|
||||
if (MouseActive)
|
||||
{
|
||||
timerStartLoad.Stop();
|
||||
StopLoadMenu?.Invoke();
|
||||
ResetData(dgv);
|
||||
ResetData(menu);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -78,7 +77,7 @@ namespace SystemTrayMenu.Handler
|
|||
{
|
||||
timerStartLoad.Stop();
|
||||
StopLoadMenu?.Invoke();
|
||||
ResetData(menu.GetDataGridView());
|
||||
ResetData(menu);
|
||||
MouseActive = false;
|
||||
}
|
||||
|
||||
|
@ -141,16 +140,16 @@ namespace SystemTrayMenu.Handler
|
|||
{
|
||||
alreadyOpened = false;
|
||||
|
||||
menu.GetDataGridView().SelectedItem = currentItemData = itemData;
|
||||
menu.SelectedItem = currentItemData = itemData;
|
||||
currentMenu = menu;
|
||||
}
|
||||
}
|
||||
|
||||
private void ResetData(ListView dgv)
|
||||
private void ResetData(Menu menu)
|
||||
{
|
||||
if (currentMenu != null)
|
||||
{
|
||||
dgv.SelectedItem = currentItemData = null;
|
||||
menu.SelectedItem = currentItemData = null;
|
||||
currentMenu = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -171,7 +171,7 @@
|
|||
</Button>
|
||||
</DockPanel>
|
||||
|
||||
<ListView x:Name="dgv" x:FieldModifier="internal" Margin="6,0" d:ItemsSource="{d:SampleData ItemCount=5}"
|
||||
<ListView x:Name="dgv" x:FieldModifier="internal" Margin="6,0" d:ItemsSource="{d:SampleData ItemCount=5}" SelectionMode="Single"
|
||||
Foreground="{x:Static stm:MenuDefines.ColorForeground}" BorderBrush="{x:Null}" Background="{x:Null}"
|
||||
ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.ScrollChanged="HandleScrollChanged">
|
||||
<ListView.ItemTemplate>
|
||||
|
|
|
@ -237,7 +237,7 @@ namespace SystemTrayMenu.UserInterface
|
|||
|
||||
internal event Action<Menu, ListViewItemData>? CellMouseEnter;
|
||||
|
||||
internal event Action<ListView>? CellMouseLeave;
|
||||
internal event Action<Menu>? CellMouseLeave;
|
||||
|
||||
internal event Action<Menu, ListViewItemData>? CellMouseDown;
|
||||
|
||||
|
@ -278,6 +278,12 @@ namespace SystemTrayMenu.UserInterface
|
|||
|
||||
internal RowData? RowDataParent { get; set; }
|
||||
|
||||
internal ListViewItemData? SelectedItem
|
||||
{
|
||||
get => (ListViewItemData?)dgv.SelectedItem;
|
||||
set => dgv.SelectedItem = value;
|
||||
}
|
||||
|
||||
internal Menu MainMenu { get; init; }
|
||||
|
||||
internal Menu? ParentMenu => RowDataParent?.Owner;
|
||||
|
@ -1200,7 +1206,7 @@ namespace SystemTrayMenu.UserInterface
|
|||
ListView lv = (ListView)sender;
|
||||
foreach (ListViewItemData itemData in lv.Items)
|
||||
{
|
||||
itemData.IsSelected = lv.SelectedItems.Contains(itemData);
|
||||
itemData.IsSelected = lv.SelectedItem == itemData;
|
||||
itemData.UpdateColors();
|
||||
}
|
||||
}
|
||||
|
@ -1209,7 +1215,7 @@ namespace SystemTrayMenu.UserInterface
|
|||
private void ListViewItem_MouseEnter(object sender, MouseEventArgs e) =>
|
||||
CellMouseEnter?.Invoke(this, (ListViewItemData)((ListViewItem)sender).Content);
|
||||
|
||||
private void ListViewItem_MouseLeave(object sender, MouseEventArgs e) => CellMouseLeave?.Invoke(dgv);
|
||||
private void ListViewItem_MouseLeave(object sender, MouseEventArgs e) => CellMouseLeave?.Invoke(this);
|
||||
|
||||
private void ListViewItem_PreviewMouseDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
|
@ -1250,6 +1256,7 @@ namespace SystemTrayMenu.UserInterface
|
|||
private Brush? backgroundBrush;
|
||||
private Brush? borderBrush;
|
||||
private ImageSource? columnIcon;
|
||||
private bool isSelected;
|
||||
|
||||
internal ListViewItemData(ImageSource? columnIcon, string columnText, RowData rowData, int sortIndex)
|
||||
{
|
||||
|
@ -1310,7 +1317,18 @@ namespace SystemTrayMenu.UserInterface
|
|||
|
||||
internal bool IsPendingOpenItem { get; set; }
|
||||
|
||||
internal bool IsSelected { get; set; }
|
||||
internal bool IsSelected
|
||||
{
|
||||
get => isSelected;
|
||||
set
|
||||
{
|
||||
if (value != isSelected)
|
||||
{
|
||||
isSelected = value;
|
||||
CallPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString() => nameof(ListViewItemData) + ": " + ColumnText + ", Owner: " + (data.Owner?.ToString() ?? "null");
|
||||
|
||||
|
|
Loading…
Reference in a new issue