2010-09-10 29 views
0

我有一個應用程序,用戶將輸入名稱列表。 (有一些有效名稱的集合。)我不確定最簡單的方法是什麼。用戶友好的方式在Silverlight 4中輸入列表?

一個想法:製作一個文本框。如果文本框失去焦點,並且內容是有效的名稱,請將其添加到列表框中。如果用戶在列表框中選擇一個條目並點擊刪除,請將其刪除。

代碼:

MainPage.xaml.cs中

private void WhoOwesInput_LostFocus(object sender, RoutedEventArgs e) 
    { 
     if (people.Contains(WhoOwesInput.Text)) 
     { 
      WhoOwesListBox.Items.Add(WhoOwesInput.Text); 
      WhoOwesInput.Text = String.Empty; 
     } 
    } 

    private void WhoOwesListBox_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Delete || e.Key == Key.Back) 
     { 
      WhoOwesListBox.Items.Remove(WhoOwesListBox.SelectedItem); 
     } 
    } 

MainPage.xaml中

<sdk:AutoCompleteBox Height="23" HorizontalAlignment="Left" Margin="337,205,0,0" Name="WhoOwesInput" VerticalAlignment="Top" Width="74" ValueMemberBinding="{Binding}" LostFocus="WhoOwesInput_LostFocus" /> 
<ListBox Height="100" HorizontalAlignment="Left" Margin="337,232,0,0" Name="WhoOwesListBox" VerticalAlignment="Top" Width="74" KeyDown="WhoOwesListBox_KeyDown" /> 

我是新來的SL,所以我害怕我可能錯過了一些控制或喜好的做事方式。有什麼建議?

謝謝。

回答

0

這是一個批量錄入,其中一個算子的會坐下來,從像紙清單或一些東西輸入源的名單?

如果是這樣的話,我會想象中的數據項應儘可能光滑。這些日復一日地做這種事情的運營商通常都是快速準確的。

所以一個選擇是,一旦操作員擊中文本框上的輸入鍵,內容將被移動到列表中,文本框被清除並準備好進入下一個條目。這樣操作員就不會離開鍵盤。只要輸入名字,打輸入,類型下一個名稱等

如果操作員錯誤地輸入一個名稱,操作者可以按下Tab鍵切換到列表中,這將立即選擇輸入的姓氏。操作者可以按德爾鍵刪除條目或編輯,編輯會從列表中刪除名稱把它背在文本框和焦點設置到文本框,使操作者可以編輯姓名。

開箱即用的,我不認爲有將要處理這個鍵盤導航爲你的任何特殊控制。你將需要處理迭代你自己,當然在SL這是而不是令人難以置信的痛苦。

0

首先爲Enter鍵做同樣的事情,如前所述。 然而,如果你想出更多的信息,你希望你的用戶輸入數據,你應該考慮一個更好的設計。

Silverlight有約束力的,其發言的數據有很大的機制,它是關於數據綁定控件依賴屬性(一個列表框的ItemSource)到CLR在一個單獨的類,這是你的XAML文件的DataContext的性能。我在這個班輪中描述的是着名的Presentation - Model模式的一部分,或者像微軟所稱的那樣。 MVVM。所以,因爲您是Silverlight的新手,請了解這些將使您的生活更輕鬆的概念。

目前,你可以做Chris上面說的。