天天看點

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,感覺很深奧,需要慢慢體會

繼續閱讀