我想阻止取消選擇列表視圖項目,如果它已被選中。因此,如何防止鼠標右鍵點擊能夠取消選擇某個項目?如何禁用列表視圖項目(ListViewItem)上的右鍵選擇?
我阻止了通過在列表視圖上使用IsSwipeEnabled="False"
來取消選擇的功能。我不需要列表視圖上的滑動功能。
如果需要,我很高興完全防止在列表視圖項目上單擊鼠標右鍵。
我想阻止取消選擇列表視圖項目,如果它已被選中。因此,如何防止鼠標右鍵點擊能夠取消選擇某個項目?如何禁用列表視圖項目(ListViewItem)上的右鍵選擇?
我阻止了通過在列表視圖上使用IsSwipeEnabled="False"
來取消選擇的功能。我不需要列表視圖上的滑動功能。
如果需要,我很高興完全防止在列表視圖項目上單擊鼠標右鍵。
如果我正確地閱讀您的問題,聽起來像您希望用戶選擇項目的能力,但無法取消選擇。如果是這樣的話,這似乎是一個奇怪的要求 - 它違背了常規的UI慣例,並做了一些用戶不希望的事情。
話雖如此,您可以通過處理ListView
中的SelectionChanged事件來實現。
當事件被觸發時,它會給你一個刪除(取消選擇)項目的列表。然後,您只需要添加這些項目回ListView的選擇項目列表:
private void itemListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
foreach (var item in e.RemovedItems)
{
itemListView.SelectedItems.Add(item);
}
}
請注意,如果你使用上面的代碼,你沒有處理任何刷卡或鼠標事件。
編輯 - 每個操作的評論,要求比我想稍有不同:
我想如果選擇不同的項目以取消選定的項目。但是我不想在已選定的項目是(手動)取消
假設你有一個選擇ListView
,你仍然可以使用SelectionChanged
事件和SelectionChangedEventArgs
做你所要求的:
private void itemListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.RemovedItems.Count > 0 && e.AddedItems.Count == 0)
{
var removed = e.RemovedItems[0];
itemListView.SelectedItem = removed;
}
}
我在以下forum上找到了一個簡單的解決方案。
您只需將一個RightTapped事件添加到ListView DataTemplate內容。
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<ContentPresenter RightTapped="daves_RightTapped" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
然後在後面的代碼:
private void daves_RightTapped(object sender, Windows.UI.Xaml.Input.RightTappedRoutedEventArgs e)
{
e.Handled = true;
}
能正常工作在Outlook風格的ListView。
我刪除了問題中的「Silverlight」標記,因爲這是與Windows運行時xaml不同的xaml風格。 –