2009-10-23 69 views
0

我的代碼一大堆是依賴於組合框類型,我希望能夠把它用在一個新的用戶界面,但我想用它需要的UI看起來像一個單選按鈕的可用性原因。是否有可能讓ComboBox控件看起來像一組RadioButton?在WPF中,是否可以有一個組合框控件,看起來像一個RadioButton?

+0

爲什麼不製作一大堆單選按鈕? – snicker 2009-10-23 19:29:05

+0

我不想添加大量的單選按鈕,因爲那意味着更多的代碼,並且圍繞ComboBox控件構建的所有其他代碼都無法與其進行交互。如果我可以將一個ComboBox設計成單選按鈕,那將是最好的。 – skb 2009-10-23 19:30:56

+0

你目前綁定到ComboBox的是什麼?它是一個枚舉? – 2009-10-23 20:17:52

回答

2

我的建議是使用一個ItemsControl與將使單選按鈕一個DataTemplate。對於ItemsControl,您將綁定與ComboBox綁定的相同內容。 需要注意的是,您需要將單選按鈕的GroupName設置爲與組相同的內容,因此它們可以是互斥的。否則,如果你什麼也沒做,你可以同時選擇多個RadioButton。

+0

謝謝!這已經足夠接近了! – skb 2009-10-23 22:10:58

0

你可以建立一個有很多的對ComboBox類做同樣的方法一個新的用戶控件,但這樣它創建多個單選按鈕,而不是適應它。

你的問題是有點含糊,但。

IE的用戶控件創建一個項目集合,並增加了一些時,繪製選框和調整,而不是一個組合框做什麼你的控制,並且只是增加了一個字符串列表。

然後,所有你需要做的就是找到並與RadioIFiedComboBox替換到ComboBox中所有引用。

繼承人一番比較:

ComboBox cb = new ComboBox(); 
cb.Items.Add("blah"); 

RadioIFiedComboBox cb = new RadioIFiedComboBox(); 
cb.Items.Add("blah"); 

public class RadioIFiedComboBox : UserControl { 
    public ObservableCollection<object> Items = new ObservableCollection<object>(); 
    public RadioIFiedComboBox() { 
    Items.CollectionChanged += new NotifyCollectionChangedEventHandler(YourCollectionChanged); 
    } 
    private void YourCollectionChanged(){ 
    //do something here to redraw your controls 
    } 
} 

上面的代碼只是一個例子,你必須創建所有你使用的方法在ComboBox類中創建類似的功能。

相關問題