首页 > 解决方案 > 如何使我的所有(或大部分)元素在 C# WPF 中使用响应式布局?

问题描述

所以我使用“*”键将总宽度划分为不同的响应区域。但显然我不能到处使用网格,有些元素不支持它等等。所以我的问题是如何保持这些元素的灵活性?我偶然发现这个问题的最新情况是当我尝试使用带有内部 GridView 的 ListView 时。据我了解,GridView 不支持使用宽度百分比声明 GridView 列,仅使用固定的 Width 值。什么是解决方法?一定要这样吗?我真的很想让我的 UI 尽可能灵活。现在,固定宽度让我感到困惑,因为我正在为 50" 2160p 屏幕设计 UI。但是,我正在设计的屏幕要小得多(13" 1080p),因此元素被按比例缩小,我无法真正使用它。这是我正在寻找的示例或理想场景的示例。

当前情景

<ListView ItemsSource="{Binding NotApprovedChanges}" Margin="40 90 40 40" FontSize="26" Name="nonApprovedChangesList">
    <ListView.View>                    
        <GridView>
            <GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="ID" Width="150" DisplayMemberBinding="{Binding Id}" />
            <GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="Requester" Width="200" DisplayMemberBinding="{Binding Requester}" />
            <GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="Date" Width="250" DisplayMemberBinding="{Binding Date}" />
        </GridView>
    </ListView.View>
</ListView>

我在寻找什么

<ListView ItemsSource="{Binding NotApprovedChanges}" Margin="40 90 40 40" FontSize="26" Name="nonApprovedChangesList">
    <ListView.View>                    
        <GridView>
            <GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="ID" Width="*" DisplayMemberBinding="{Binding Id}" />
            <GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="Requester" Width="2*" DisplayMemberBinding="{Binding Requester}" />
            <GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="Date" Width="*" DisplayMemberBinding="{Binding Date}" />
        </GridView>
    </ListView.View>
</ListView>

或者

<ListView ItemsSource="{Binding NotApprovedChanges}" Margin="40 90 40 40" FontSize="26" Name="nonApprovedChangesList">
    <ListView.View>                    
        <GridView>
            <GridView.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="2* />
                <ColumnDefinition Width="*" />
            </GridView.ColumnDefinitions>

            <GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="ID" GridView.Column="0" DisplayMemberBinding="{Binding Id}" />
            <GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="Requester" GridView.Column="1" DisplayMemberBinding="{Binding Requester}" />
            <GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="Date" GridView.Column="2" DisplayMemberBinding="{Binding Date}" />
        </GridView>
    </ListView.View>
</ListView>

标签: c#wpflistviewdatagridwpf-grid

解决方案


推荐阅读