【问题标题】:WPF DataGridTemplateColumn Width="*" Header too wideWPF DataGridTemplateColumn Width="*" 标题太宽
【发布时间】:2015-07-30 09:32:45
【问题描述】:

我正在尝试使用“*”来分配 DataGrid 中每个 DataGridTemplateColumn 的宽度。

<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 控件,所以我不确定是不是这个原因。

【问题讨论】:

  • 你设置了窗口的高度和宽度吗?如果窗口没有最大化,它会跟随高度和宽度值。

标签: c# wpf datagrid


【解决方案1】:

使用“*”应用时的宽度和高度以“1”为单位进行测量。 因此,每当您划分屏幕时,它都必须被划分,例如一个完整的部分正在被划分。

使用 4* 和 6* 是不正确的。请改用 0.4* 和 0.6*,总和为 1。

【讨论】:

  • 我试过了,显然没有帮助。你认为我使用 MahApps 的 DataGrid 可能是问题所在吗?
  • 我执行了您提供的代码,它工作正常。我认为问题可能出在 MahApps 上。删除 MahApps 控件并使用普通控件并尝试一下。
  • 我会试试这个并告诉你
  • 我删除了 MahApp 控件,但没有帮助。您是否在多显示器设置上尝试过?我在想我还会在哪里搞砸......
  • 你认为这是DataGrid的正常行为吗?这意味着我应该放弃它,我认为我的应用程序的用户不会喜欢它,该应用程序跨越 3 个未最大化的显示器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2013-06-30
相关资源
最近更新 更多