WPF网格行基于方向的布局

本文关键字:方向 布局 网格 于方向 WPF | 更新日期: 2023-09-27 18:10:58

如果我在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中反映当前方向的属性,然后使用转换器来设置高度,但这似乎不是正确的方法来处理这个问题。

有更好的方法吗?

WPF网格行基于方向的布局

请看一下这个问题。

WPF中的横向-纵向方向

你需要创建一个实现横向和横向的视图,并使用属性和DataTrigger来改变视图,你需要绑定来自设备的输入,设置当前的方向。

你也可以切换使用DataTrigger或DataTemplate这取决于你的UI有多大和多复杂