这有两种做法:自己做个UserControl。你在一个UserControl里放两个Grid,分别放收缩和伸展两个状态的面板。每次点击UserControl的时候,你可以对它的Tag赋值。比如收缩时候是0,伸展时候是1。根据tag值设置UserControl的宽度(因为两个状态下UserControl宽度不同)可以直接用Expander控件,使用blend编辑其控件模板,修改其IsExpanded下的trigger和ExpandDirection=Right的trigger。楼主可以根据自己理解挑选自己喜欢的方式做,如遇到不明白的地方,欢迎追加提问。