WPF'de ListView
'un basit bir uygulamasına sahibim; bu, fare düğmesini basılı tutarak ve öğeleri sürükleyerek listede birden fazla öğe seçmeme izin veriyor. Ancak, fare düğmesini basılı tutarken, fareyi ListView
'un dışına taşıdığımda, seçim ile garip bir şey olur. İdeal olarak, sadece seçimin aynı kalmasını isterdim, ancak bunun yerine, seçilen son öğeyi hızla seçerek, yalnızca seçilen son öğeyi bırakır.ListBox ile sürükleme seçimi
İşte kod, herhangi bir fikrin var mı? Fare "sürükle" listenin en üstünde veya listenin alt altına gittiğinde
public class MultiSelectListView : ListView
{
private bool m_isSelectionActive;
public bool IsSelectionActive
{
get { return m_isSelectionActive; }
}
protected override DependencyObject GetContainerForItemOverride()
{
return new MultiSelectListViewItem(this);
}
protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
{
m_isSelectionActive = true;
}
protected override void OnPreviewMouseLeftButtonUp(MouseButtonEventArgs e)
{
m_isSelectionActive = false;
}
}
public class MultiSelectListViewItem : ListViewItem
{
private readonly MultiSelectListView m_parent;
public MultiSelectListViewItem(MultiSelectListView parent)
{
m_parent = parent;
}
protected override void OnMouseEnter(System.Windows.Input.MouseEventArgs e)
{
if (m_parent.IsSelectionActive)
IsSelected = true;
}
}