2012-08-27 56 views
1

我有一個ListBox及其DataContext。當我選擇一個項目時,我無法再選擇相同的項目。當有很多對象時,這不是問題,但有時候,一個後期服務會返回一個只包含一個元素的列表,如果用戶選擇該元素,並且他希望再次選擇它,他將無法做到這一點。任何人都知道如何解決這個問題選擇一個項目兩次或更多次

無論如何,謝謝!

回答

1

正如蒂埃裏問,爲什麼你想讓用戶再次選擇相同的物品?

如果只是這一個邊緣情況下,你有一個項目,填滿列表框,然後我會問,單個項目(或第一個項目與多個返回)默認選擇?如果是,請嘗試在列表框上將IsSynchronizedWithCurrentItem屬性設置爲False。沒有看到代碼,很難提供更好的答案。

如果每次用戶選擇一個項目時都會運行代碼,則無論它是否相同,您都可能遇到工作流問題。您可能想要查看是否可以重構此區域中的代碼以更改工作流程。

如果您無法通過選擇項目來更改工作流程,即使它是同一項目,也可能需要將按鈕的控件模板更改爲Textblock中的每個項目。這將允許您綁定到Command屬性並明確知道用戶點擊了哪個項目。

+0

,使用列表框導航鏈接的列表是範式 - 而不是一個工作流程問題。 –

1

如果您使用ListBox做類似導航的事情,那麼您希望用戶能夠連續多次選擇一個項目是有道理的。這裏是你如何做到這一點:

「問題」簡單地說就是ListBox通知您的改變,並選擇同一項目不是變化。因此在方法結束時使其無效,並在開始時檢查您的無效狀態。

public void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var lb = (ListBox)sender; 
    if (lb.SelectedIndex == -1) return; 

    //your selection logic here 

    lb.SelectedIndex = -1; 
} 
2

試試這個,它爲我工作.. :)

public void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     ListBox listBox = sender as ListBox; 

     if (listBox != null && listBox.SelectedItem != null) 
     { 
      // do work 
     } 

     listBox.SelectedIndex = -1; 
    } 
在WP7
+0

謝謝!它也適用於我 –

+0

太好了。請在您認爲合適的時候加註/接受答案。 –