tmytのらくがき

個人の日記レベルです

Windows 10 TH2上でWindows8.1アプリのListViewが並び替えられないバグを回避する

Windows10 TH2、ビルド10586と呼ばれてるやつでWindows 8.1向けなアプリのListViewが並び替えられないバグを回避するコード書きました。

本来であれば、こうすれば並び替えられます。

<ListView CanReorderItems="True" CanDragItems="True" AllowDrop="True" />

これをTH2上で実行すると並び替えられそうな動きはするけども実際並び替えられません。ちなみにランタイムのバグだそうです。

この問題は以下の条件がそろった場合に発生します。

Windows 8.1 ターゲットのアプリが問題なのでWindows 10向け、つまりUWPでは発生しません。というわけでこのバグを回避するコードです。

プロジェクトに追加して適当な感じで使ってください。たとえばこんな感じ。

<ListView CanReorderItems="True" CanDragItems="True" AllowDrop="True" 
          extension:TH2Workarounds.ReorderListViewItem="True"/>

ItemsSourceにObservableCollectionがBindingされてる場合でしか試してません。たぶんGridViewでも動くかもしれませんが試してません。

*1:2015/12/12 時点のビルド10586.29 で未修正