我使用附加行爲來添加通過單擊列標題來排序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中有一個滾動條,和我點擊滾動條的「軸」或滾動箭頭(但不是大拇指!):
Anatomy of a Scroll Bar http://i.msdn.microsoft.com/dynimg/IC79322.gif
那麼GridViewColumnHeader.C lickEvent被觸發,並且我的代碼失敗,因爲'header'現在爲空。顯然這不是預期的行爲,現在我必須確保OriginalSource是一個GridViewColumnHeader。
爲什麼會發生這種情況?
感謝PS,我沒有注意到這個問題出現在我們的代碼中。 –