添付のビヘイビアを使用して、列のヘッダーをクリックしてListViewを並べ替える機能を追加しています。動作はGridViewColumnHeader上でユーザがクリックを処理するために、次のハンドラを追加します。GridViewColumnHeader.Click ListViewのスクロールバーの軸とスクロール矢印をクリックしてトリガーする
listView.AddHandler(GridViewColumnHeader.ClickEvent, new RoutedEventHandler(ColumnHeader_Click));
ハンドラは、このようなものになります。
static void ColumnHeader_Click(object sender, RoutedEventArgs e)
{
var listView = sender as ListView;
var header = e.OriginalSource as GridViewColumnHeader;
var gridView = ((GridView)(listView.View));
...
}
を私はListViewコントロールがスクロールバーを持っている場合ことに気づいて、I (ただし、親指を!)スクロールバーの「シャフト」をクリックするか、矢印をスクロールします。その後、
Anatomy of a Scroll Bar http://i.msdn.microsoft.com/dynimg/IC79322.gif
GridViewColumnHeader.CをlickEventがトリガーされ、 'header'がnullになったためコードが失敗します。明らかに、これは予想される動作ではなく、今ではOriginalSourceがGridViewColumnHeaderであることを確認する必要があります。
どうしてですか?
PSのおかげで、私は気づいていなかったし、私たちのコードに問題があった。 –