You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows;
namespace Txgy.Controls
{
public class myListBox : System.Windows.Controls.ListBox
{
private ListBoxItem _lastSelectedItem;
protected override DependencyObject GetContainerForItemOverride()
{
return new myListBoxItem();
}
//protected override void OnSelectionChanged(SelectionChangedEventArgs e)
//{
// //base.OnSelectionChanged(e);
// if (this.SelectedItem == null && _lastSelectedItem != null)
// {
// // Restore the last selected item if nothing is selected
// _lastSelectedItem.IsSelected = true;
// }
// else
// {
// // Update the last selected item
// _lastSelectedItem = this.SelectedItem as ListBoxItem;
// }
//}
}
public class myListBoxItem : System.Windows.Controls.ListBoxItem
{
protected override void OnSelected(System.Windows.RoutedEventArgs e)
{
DependencyObject dep = (DependencyObject)e.OriginalSource;
while ((dep != null) && !(dep is ListBoxItem))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
//ListBoxItem item = (ListBoxItem)dep;
//if (item.IsSelected)
//{
// item.IsSelected = !item.IsSelected;
// //e.Handled = true;
//}
base.OnSelected(e);
}
//protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e)
//{
// // 防止离开后状态改变
// if (IsSelected)
// {
// IsSelected = true;
// }
// base.OnMouseLeave(e);
//}
}
}