WPF控件的动态布局取决于某些条件

时间:2011-10-28 11:17:46

标签: c# wpf layout

我正在使用WPF,我的布局有问题。我有一个停靠面板(非WPF,我刚刚托管我的控件)。当用户希望将此面板停靠在屏幕的左侧或右侧时,我需要以一种方式布置我的控件。但是当用户希望将此面板停靠在顶部或底部时,我需要以另一种方式布置我的控件。

我的问题是实现WPF控件动态布局的最佳方法是什么,这取决于某些条件?

据我所知,我可以使用网格并动态更改网格内控件的位置。但我对这个解决方案并不满意。我正在寻找一个没有代码干预的解决方案,仅限xaml。如果这是不可能的,至少涉及对代码的最小干预。

提前致谢。

3 个答案:

答案 0 :(得分:5)

您可以使用AvalonDock来获得与视觉工作室非常相似的对接系统。
这将使您的用户完全控制他们想要的布局,并且实现起来并不难。

但是如果你真的想要一个快速的方法来做到这一点,我建议将DockPanel.Dock属性绑定到一个ViewModel值,该值根据用户输入而变化(如果需要,还会带有IValueConverter。) / p>

答案 1 :(得分:3)

为此目的,DataTemplate功能是。

我们的想法是提供多个DataTemplates,然后根据标准使用DataTemplateSelector rturn权利DataTemplate的自定义实现。

答案 2 :(得分:1)

使用StoryBoard并更改控件的转换