2010-03-26 17 views
1

我想重寫ListBox Items的選擇行爲。KeyDown事件不適用於Silverlight中的箭頭鍵,Home,End,PageUp,PageDown和其他類似的鍵

我們可以使用向上和向下箭頭遍歷ListBox項目,但我想使用向左和向右箭頭鍵遍歷列表。

雖然我想爲ListBox添加按鍵事件,但它顯示除箭頭鍵,Home鍵,End鍵和類似鍵外的幾乎所有按鍵。

我有以下代碼:

private void listArtist_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
{ 
    if (e.Key.ToString() == "Enter") 
    { 
     // Go to some page 
    } 
    else 
    { 
     MessageBox.Show(e.Key.ToString()); 
    } 
} 

我毫無頭緒這一點。請幫忙。

感謝, Subhen

回答

4

你需要做的是子類ListBox和重寫的onkeydown功能。也許是這樣的:

class MyListBox : ListBox 
{ 
    protected override void OnKeyDown(KeyEventArgs e) 
    { 
     switch (e.Key) 
     { 
     case Key.Left: 
      // .... 
      e.Handled = true; 
      break; 
     case Key.Right: 
      // .... 
      e.Handled = true; 
      break; 
     } 

     if (!e.Handled) 
      base.OnKeyDown(e); 
    } 
} 
+0

嗨加布爲你的建議想法,謝謝。現在我該如何在我的頁面上實現它。我是否需要創建一個UserControl,然後將其添加到我的XAMl中。 請建議。 – Simsons

+0

你不需要一個UserControl。只需使用'MyListBox'來代替XAML中的'ListBox'。 – Gabe

+0

http://support.microsoft.com/kb/320584 –

相關問題