WPF-多個Expander聯動

最近在寫一點WPF的控件,說一下需求吧。

產品提出需要設計可摺疊的控件,需要的時候點開,展示內容;不需要的時候,點擊收起內容。其實WPF裏面toolbox有expander這個控件,但是又來了個奇葩的需求:要求一次只能展開一個expander,類似radiobutton的特性,“可以且只能”選中一項。在網上搜了很多資料,不得不佩服Windows是生產力工具這句話。。。

例如:貼吧裏面就提出了一種方法,讓RadioButton集成Expander的模板,同時綁定RadioButton的IsChecked和Expander的IsExpanded,RadioButton的content和Expander的content(不得不佩服Windows的開發思路)。

F5運行之後,既有了Expander的特性,又兼具RadioButton的group功能,but,Expander的header沒了……

有人提出說將Expander header加入到RadioButton中,說的不是很詳細,然後我也是剛入門,搗騰了半天也還是不行。

接着找到了一篇博客WPF簡易手風琴完美地滿足了需求,而且作者提出了兩種思路:Expander+listbox和上面貼吧提出的一種方法。第一種略顯複雜,第二種作者也只是提了下思路,具體實現沒有寫出來。我不想用第一種的方法,感覺代碼量太大,想着能定義好模板,然後直接在xaml裏面添加控件是最方便的。搜了一晚上的Stack Overflow也沒有結果。今天早上突然想起來這篇博文裏面提到Tag這個屬性,於是就想着把Expander的header和RadioButton的Tag綁定在一起,設置RadioButton的Tag,然後再運行,果然,Tag屬性綁定到Expander的Header上了。搞定……

後面還需要多學習下Template和Style,感覺很深奧,需要慢慢體會

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章