2010-08-25 77 views
1

我有許多組合框設置對話框。通常情況下,這些ComboBoxes將只有一個可選值。所以爲了讓對話更易於使用,我希望ComboBox自動選擇單個值,當且僅當Items.Count == 1 & & SelectedItem == null。WPF組合框自動選擇第一個值,如果項目集合只包含一個

我發現this,但是如果我可以避免它,不想添加額外的依賴關係。

我結束了創建基礎上,組合框帶有一個疊加的CustomControl:

public class SmartComboBox : ComboBox 
{ 
    public SmartComboBox() 
    { 
    } 

    protected override void OnItemsChanged(
     NotifyCollectionChangedEventArgs e) 
    { 
     base.OnItemsChanged(e); 

     if (Items.Count == 1 && SelectedItem == null) 
     { 
      SelectedItem = Items[0]; 
     } 
    } 
} 
  • 能相同的行爲與觸發器/掛鉤實現?
  • 這是擴展ComboBox時需要做的所有事情嗎?我的意思是,當涉及到樣式等時,它是否會像ComboBox一樣工作(除了這種添加的行爲)?
+0

SelectedIndex = 0是更可靠的選擇。在我的情況下,取決於我的綁定SelectedItem並不總是工作,因爲我添加了一個虛擬的'沒有物品可用'項目,我的'SelectedItem'綁定被拒絕 – 2013-05-09 02:19:43

回答

1

是的,就是這樣 - 否則它將起作用。

我想這可能是您先前有關訂閱ComboBox事件的問題的邏輯端點。

+0

你跟蹤我嗎? ;)但是,它確實是解決同一問題的另一種方法。我想我會和這個一起去的。 – Mizipzor 2010-08-25 12:14:54

1

是的ComboBox將繼續工作完全正常,而另一種方式(我個人喜歡的方式,因爲我可以添加多行爲單個組合框)是使用Behaviors按照您鏈接到的問題建議。

相關問題