我正在使用WPF,我的布局有问题。我有一个停靠面板(非WPF,我刚刚托管我的控件)。当用户希望将此面板停靠在屏幕的左侧或右侧时,我需要以一种方式布置我的控件。但是当用户希望将此面板停靠在顶部或底部时,我需要以另一种方式布置我的控件。
我的问题是实现WPF控件动态布局的最佳方法是什么,这取决于某些条件?
据我所知,我可以使用网格并动态更改网格内控件的位置。但我对这个解决方案并不满意。我正在寻找一个没有代码干预的解决方案,仅限xaml。如果这是不可能的,至少涉及对代码的最小干预。
提前致谢。
答案 0 :(得分:5)
您可以使用AvalonDock来获得与视觉工作室非常相似的对接系统。
这将使您的用户完全控制他们想要的布局,并且实现起来并不难。
但是如果你真的想要一个快速的方法来做到这一点,我建议将DockPanel.Dock
属性绑定到一个ViewModel值,该值根据用户输入而变化(如果需要,还会带有IValueConverter
。) / p>
答案 1 :(得分:3)
为此目的,DataTemplate功能是。
我们的想法是提供多个DataTemplates,然后根据标准使用DataTemplateSelector rturn权利DataTemplate的自定义实现。
答案 2 :(得分:1)
使用StoryBoard并更改控件的转换