我使用XAML中Windows 8.1 Windows Store應用程序模板中的項目頁面模板。該頁面具有包含多個項目元素的大型GridView控件。在長按GridView控件(XAML)後啓用拖放和重新排序
我想啓用項目的拖拽和重新排序,但只有在用戶長時間點擊其中一個項目(類似於Windows平板電腦開始菜單和iOS/Android主屏幕上的操作方式)。
我試過綁定到Holding
事件並啓用CanDragItems
和CanReorderItems
,但用戶無法在Holding
事件期間開始拖動該項目。
這裏的GridView的定義:
<GridView
x:Name="itemGridView"
AutomationProperties.AutomationId="ItemsGridView"
AutomationProperties.Name="Items"
TabIndex="1"
Grid.RowSpan="2"
Padding="116,136,116,46"
ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
SelectionMode="None"
IsSwipeEnabled="False"
IsItemClickEnabled="True"
CanReorderItems="False"
AllowDrop="False"
CanDragItems="False"
ItemClick="itemGridView_ItemClick"
>
有了這個後面的代碼:
void OnHolding(object sender, HoldingRoutedEventArgs e)
{
if(e.HoldingState == Windows.UI.Input.HoldingState.Started)
{
Debug.WriteLine("Drag Start");
itemGridView.CanDragItems = true;
itemGridView.IsSwipeEnabled = true;
itemGridView.CanReorderItems = true;
itemGridView.AllowDrop = true;
}
else
{
Debug.WriteLine("Drag End");
itemGridView.CanDragItems = false;
itemGridView.IsSwipeEnabled = false;
itemGridView.CanReorderItems = false;
itemGridView.AllowDrop = false;
}
}
謝謝!
基於從調試信息的輸出,該事件似乎在充當我本來打算。當用戶長時間點擊並拖動停止點擊時,會打印拖動開始。當打印「拖動開始」時,恰好當我希望它們能夠重新排序時,但控制器不允許在沒有其他拖動的情況下重新排序。我不認爲這是問題。 – Gbps
我認爲這是因爲您在啓用權限之前執行了保持事件,所以現在它沒有抓取該對象。我試圖通過這個想法,但不是你總是可以拖動項目啓用是真實的。 如果您始終將其設置爲True並刪除下面的行,它會正常工作嗎? itemGridView.CanDragItems = false; – DoomVroom