0

我有 SizeToContent = "WidthAndHeight" 的窗口,启动位置设置为手动。此窗口包含一个具有两行的网格:第一个具有高度“1*”,第二个具有自动高度。第一行包含 xamdatagrid (infragistics),第二行包含 OkCancel 按钮。

xamdatagrid 初始化后,窗口被垂直拉伸到可见区域之外。

我不想将最大高度绑定到基于系统参数和其他常量的某些计算。

参见:窗口截图

代码:

<Window x:Class="CopyRenameLineItems.CopyAndRename"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:igDP="http://infragistics.com/DataPresenter"
         x:Name="CopyWindow" Title="Copy/Rename Line Item"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="500"
         d:DataContext="{d:DesignInstance d:Type=copyRenameLineItems:CopyAndRenameViewModel}" SizeToContent="WidthAndHeight" >

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Assets.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
<Grid Margin="7" Name="MainGrid">

    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="0">
        <igDP:XamDataGrid Name="CopyRenameGrid" Margin="5" GroupByAreaLocation="None" DataSource="{Binding Rows,UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                            AutoFit="True" RecordContainerGenerationMode="PreLoad" >
            <igDP:XamDataGrid.FieldSettings>
                <igDP:FieldSettings
                    CellValuePresenterStyle="{StaticResource CellsBorder}"
                    AutoSizeOptions="All"
                AllowEdit="True"   
                AllowRecordFiltering="True"
                FilterLabelIconDropDownType ="MultiSelectExcelStyle" 
                CellClickAction="EnterEditModeIfAllowed"/>
            </igDP:XamDataGrid.FieldSettings>
            <igDP:XamDataGrid.FieldLayoutSettings>
                <igDP:FieldLayoutSettings 
                    AllowClipboardOperations="All"                                
                    AutoGenerateFields="False"
                    AutoFitMode="Never"
                    FilterRecordLocation="OnTop"                                
                    FilterUIType="LabelIcons"  />
            </igDP:XamDataGrid.FieldLayoutSettings>
            <igDP:XamDataGrid.FieldLayouts>
                <igDP:FieldLayout>
                    <igDP:FieldLayout.Fields>
                        <igDP:Field Name="Copy" >
                            <igDP:Field.Settings>
                                <igDP:FieldSettings Width="Auto" LabelPresenterStyle="{StaticResource CopyHeader}" />
                            </igDP:Field.Settings>
                        </igDP:Field>
                        <igDP:Field Name="Name" Label="Name"">
                            <igDP:Field.Settings>
                                <igDP:FieldSettings AllowEdit="False" Width="Auto" />
                            </igDP:Field.Settings>
                        </igDP:Field>
                        <igDP:Field Name="Description" Label="Description">
                            <igDP:Field.Settings>
                                <igDP:FieldSettings AllowEdit="False" Width="Auto"/>
                            </igDP:Field.Settings>
                        </igDP:Field>
                        <igDP:Field Name="NewName" Label="New name" Width="200">
                        </igDP:Field>
                    </igDP:FieldLayout.Fields>
                </igDP:FieldLayout>
            </igDP:XamDataGrid.FieldLayouts>
        </igDP:XamDataGrid>

    </Grid>

    <Grid Grid.Row="1" Margin="0,7,0,0" VerticalAlignment="Bottom">
        <Grid.ColumnDefinitions >
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid Grid.Column="0">
            <Button Height="25" Width="45" HorizontalAlignment="Right" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
                    Content="OK" Command="{Binding CopyRenameWindowOkButtonClick}" CommandParameter="{Binding ElementName=CopyWindow}" Margin="0,0,15,0"/>
        </Grid>
        <Grid Grid.Column ="1">
            <Button Height="25" Width="45" HorizontalAlignment="Right" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Cancel" Command="{Binding  CloseWindowCancelButtonClick}"
                CommandParameter="{Binding ElementName=CopyWindow}"/>

        </Grid>
    </Grid>


</Grid>
</Window>

谢谢,

泽哈维特

4

2 回答 2

0

不要使用

SizeToContent="宽度和高度"

仅因为它会将sizeof设置Window为其内容。你XamDataGrid有很多records所以Window会增长到一个非常大的大小。相反,只需删除该属性,然后content将根据Window.

或者

先给你Window一些Height(尝试你的bindingto )然后你可以使用并且不会无限增长。行高也无关紧要,因为您没有给任何或任何固定值。HeightWindowSystem.Windows.SystemParameters.PrimaryScreenHeightSizeToContentWindowGridHeightcontrolGrid

这解决了问题。

于 2015-12-30T10:57:45.213 回答
0

首先,值 1* 并不意味着 SizeToContent = "WidthAndHeight"。如果将“1*”更改为“Auto”,您将有相同的行为。您应该删除 SizeToContent = "WidthAndHeight" 并执行以下操作:

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

    </Grid.RowDefinitions>
    <Grid>
        your list ..
    </Grid>
    <Grid Grid.Row="1">
        you buttons ..
    </Grid>
</Grid>

您的第一行(列表)将是窗口大小的 (3/(3+1))%

第二个 (1/(3+1))%。

于 2015-12-03T11:39:28.127 回答