WPF datagridtemplatecololwidth ="*"头球过宽

本文关键字:quot datagridtemplatecololwidth WPF | 更新日期: 2023-09-27 18:05:36

我试图分配每个datagridtemplatecolum列在一个DataGrid使用"*"的宽度。

<DataGrid  Name="Mapping" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="1"                   
    ItemsSource="{Binding Information.Signals}" 
             SelectionMode="Single"  AutoGenerateColumns="False" VirtualizingPanel.IsVirtualizing="True" FontSize="10" 
             RowDetailsVisibilityMode="VisibleWhenSelected" BorderThickness="1"   
             EnableColumnVirtualization="True" EnableRowVirtualization="True" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.IsDeferredScrollingEnabled="True"
             ScrollViewer.CanContentScroll ="True" VirtualizingPanel.VirtualizationMode="Recycling"
             CanUserAddRows="True" CanUserResizeRows="False" CanUserDeleteRows="True"  SelectionUnit="FullRow"
             ScrollViewer.HorizontalScrollBarVisibility="Auto" 
          >
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Name"
                                CellTemplate="{StaticResource NameTemplate}" 
                                CanUserSort="True" CanUserReorder="False" CanUserResize="True" SortMemberPath="Name"                                                                           
                                Width="6*"
                                >
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="Type" 
                                CellTemplate="{StaticResource PropertyTemplate}" 
                                CanUserSort="True" CanUserReorder="False" CanUserResize="True"  SortMemberPath="SelectedProperty"                                    
                                Width="4*">
        </DataGridTemplateColumn>

和ColumnTemplates类似于这个

        <DataTemplate x:Key="NameTemplate">
            <Grid HorizontalAlignment="Stretch" VerticalAlignment="Center">
                <TextBlock Text="{Binding Path=Name}" MinWidth="280" FontSize="11" FontFamily="Calibri"  
                                       HorizontalAlignment="Stretch" VerticalAlignment="Center"/>
            </Grid>
        </DataTemplate>

当窗口被最大化时,缩放工作正常。发生的情况是,当它没有最大化时,标题几乎是3个显示器宽,比如3000像素。

如果我将宽度设置为固定值,一切都很好。谁能建议我怎样解决这个问题?我想使用"*"

来使用相对缩放

更新:WPF项目正在使用MahApps控件,所以我不确定这是否是原因。

WPF datagridtemplatecololwidth ="*"头球过宽

当使用"*"时,宽度和高度在计数为"1"时测量。所以当你分割屏幕的时候,它必须被分割,比如一个完整的部分被分割。

使用4*和6*不正确。使用0.4*和0.6*代替,它们的总和为1。