我想創建一個WPF組合框控件,其中包含一個清除按鈕時,選擇了某些東西。控件應該有兩種狀態:如果選擇了某個東西,控件看起來就像一個帶有清晰按鈕的標籤。如果沒有選擇,則顯示正常的組合框。下面的圖片顯示了這兩個州。WPF Combobox與清除按鈕
研究我的問題,我遇到以下做題,這是非常類似地雷傳來:
Adding a button to a combobox in wpf
How to subclass a WPF ComboBox to add an extra button
都表明子類組合框提供了修改後的模板額外的按鈕。但這是我有點困惑的地方。 John Bowen對第二個鏈接問題的回答表明我應該複製ComboBox的默認模板;修改它以包含從Blend獲取模板的按鈕。不是精通融合,我發現MSDN上的模板的位置:
http://msdn.microsoft.com/en-us/library/ms752094(v=vs.85).aspx
我的問題是我不太知道我應該改變。看看默認模板,我認爲我需要按照以下方法做一些事情:
- 創建一個新的'IsSelected'屬性,我可以將觸發器鉤住。
- 添加一個清除按鈕的控制模板,觸發器連接到隱藏按鈕的IsSelected。
- 將IsSelected觸發器附加到ComboBoxToggleButton控件模板以在選擇時隱藏它。
- 當IsSelected爲true時,以某種方式在組合框模板中重新調整
PART_EditableTextBox
文本框的大小。
這似乎是正確的,如果我吠叫錯誤的樹,我怎麼做或任何其他建議的指針。
你可以使用一個轉換器(谷歌它)來設置基於選擇的兩個控件的可見性。我沒有時間舉一個例子,所以我不會將它作爲答案發布。 – JeremyK
您確實需要構建一個新的控件模板,但是您需要創建一個新的「VisualState」,該對象在選擇某些內容時打開。如果你使用'VisualState',那麼當清除按鈕將'SelectedValue'設置爲'null'時,它會正確響應。 –