为了账号安全,请及时绑定邮箱和手机立即绑定

Datagrid高度展开窗口

Datagrid高度展开窗口

C#
红颜莎娜 2022-11-21 16:22:26
现在我在一个窗口中有一个数据网格,在某处单击按钮后会填满,每当数据网格填满时,它就会超过窗口的当前大小并进一步扩展窗口。确保数据网格目前只能扩展到窗口的当前大小的方法是什么。我要求窗口之后能够手动调整大小,因此无法设置最大高度。    <Grid>    <Grid.RowDefinitions>        <RowDefinition Height="*"/>        <RowDefinition Height="40" MinHeight="40"/>    </Grid.RowDefinitions>    <Grid.ColumnDefinitions>        <ColumnDefinition Width="Auto"/>        <ColumnDefinition Width="*"/>        <ColumnDefinition Width="Auto" MinWidth="250"/>    </Grid.ColumnDefinitions>    <GroupBox Grid.Column="0 Margin="10,0,5,0">        <Grid MaxHeight="{Binding ActualHeight, ElementName= AddressTable}">            <Grid.RowDefinitions>                <RowDefinition/>            </Grid.RowDefinitions>            <Grid.ColumnDefinitions>                <ColumnDefinition Width="Auto"/>                <ColumnDefinition Width="Auto"/>            </Grid.ColumnDefinitions>                 <DataGrid Name="AddrTable" VerticalScrollBarVisibility="Auto"                        Grid.Row="0"
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

我不确定这是否是您想要的,但是Height使用 Window 使 MaxHeight 动态化的一种方法是使用RelativeSource. 让我解释:


在您的Grid中,您将 设置MaxHeight为ActualHeight窗口的。为此,您只需要绑定


MaxHeigth = "{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=ActualHeight}"

现在,这不是一个很好的解决方案,因为窗口内有边距、填充和更多项目。所以你想要的是Grid使ActualHeight. 因此,您需要一个Converter。


我已经为您制作了这个,它会返回一定百分比的价值。


public class SizePercentageConverter : IValueConverter

{

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)

    {

        if (value == null) 

            return 0:

        if (parameter == null)

            return (double)value;


        var split = parameter.ToString().Split('.');

        var parameterDouble = double.Parse(split[0]) + double.Parse(split[1]) / Math.Pow(10, split[1].Length);

        return (double)value * parameterDouble;

    }


    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

    {

        // Don't need to implement this

        return null;

    }

在ResourceDictionary中定义它之后


<converters:SizePercentageConverter x:Key="PercentageConverter" />

你可以在你的MaxHeight. 例如,如果你希望它是的70%,ActualHeight你只需要写


MaxHeight = "{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=ActualHeight, Converter={StaticResource PercentageConverter}, ConverterParameter=0.7}"

否则,如果您还可以创建一个减去一个值的转换器。例如,一旦绑定它就返回ActualHeight- parameter。


我希望这会有所帮助,并让我知道进展情况。


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号