我目前正在做一個ListView中的多個ListViewItems應用程序,對雙擊事件作出反應。但是,當雙擊ListView時,我需要知道哪些項目被雙擊。列表視圖雙擊項目
當雙擊UWP中的列表視圖時,它在發出雙擊事件之前不會選擇該項目。因此,我無法通過myListView.SelectedItem獲取項目。 UWP似乎不支持命中測試,除非我錯過了某些東西。
想法?
我目前正在做一個ListView中的多個ListViewItems應用程序,對雙擊事件作出反應。但是,當雙擊ListView時,我需要知道哪些項目被雙擊。列表視圖雙擊項目
當雙擊UWP中的列表視圖時,它在發出雙擊事件之前不會選擇該項目。因此,我無法通過myListView.SelectedItem獲取項目。 UWP似乎不支持命中測試,除非我錯過了某些東西。
想法?
我解決我的問題,通過執行以下操作:
我設置IsHitTestVisible財產上在ListViewItem內網格是假的(僅適用,如果你在列表視圖中有控制)。
我訂閱了ListView的雙竊聽事件
當事件觸發,我用DoubleTappedRoutedEventArgs搶原始出處和鑄造,爲ListViewItem的(或在我的情況,我的用戶)。
下面的代碼:
定製的ListViewItem: XAML
<ListViewItem x:Name="ListBoxItemContainer" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Padding="0,0">
<Grid x:Name="MainGrid" HorizontalAlignment="Stretch" IsHitTestVisible="False">
<!-- Your controls here -->
</Grid>
</ListViewItem>
列表查看代碼:
private async void MainListView_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
var test = (ListViewItem)MainListView.SelectedItem;
// Test is your reference to the list view item that was clicked
}
注意:請確保您訂閱到您的列表視圖的雙抽頭事件。
試試這個:
private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (ListView.SelectedIndex == -1) return;
_previousIndex = ListView.SelectedIndex;
if (_previousIndex == ListView.SelectedIndex)
{
//double-click occured
_previousIndex = -2;
}
ListView.SelectedIndex = -1;
}
當您發表原始評論時,onselectionchanged事件不會在雙擊項目時觸發。 – Saghen
使用它你不需要訂閱任何雙擊 –
檢查這個問題https://stackoverflow.com/questions/45812310/uwp-listboxitem-click-trigger/45814015#45814015你也可以創建一個字段來保存先前選擇的索引來比較雙擊 –
選擇當一件物品被雙擊時,改變不會發生火災。這是我的問題的根源。 – Saghen
嘗試在ListViewItem的DataTemplate而不是ListView上註冊DoubleTapped事件。 – kennyzx