WPF网格行的基于方向的布局

时间:2015-09-02 17:34:52

标签: c# wpf

如果我在WPF中有一个Grid,我希望RowDefinitions根据设备当前所处的方向设置它的高度,我将如何实现此目标?

例如,当我的应用处于横向模式时,我的默认RowDefinitions为:

   <Grid.RowDefinitions>
        <RowDefinition Height=".25*"/>
        <RowDefinition Height=".50*"/>
        <RowDefinition Height=".1*"/>
   </Grid.RowDefinitions>

然而,在纵向模式下,这看起来很傻。在纵向模式下,我宁愿让RowDefinitions成为:

   <Grid.RowDefinitions>
        <RowDefinition Height=".15*"/>
        <RowDefinition Height=".75*"/>
        <RowDefinition Height=".1*"/>
   </Grid.RowDefinitions>

我可能只是将每个Height绑定到我的ViewModel中反映当前方向的属性,然后使用转换器来设置高度,但这似乎不是解决此问题的正确方法。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

请看一下这个问题。

Landscape-Portrait orientation in WPF

您需要创建一个实现横向和横向的视图,并使用属性和DataTrigger更改视图,您需要绑定设备的输入,此时设置方向。

您还可以切换使用DataTrigger或DataTemplate,这取决于您的UI的大小和复杂程度。