【问题标题】:Wpf Datagrid: resize column from codeWpf Datagrid:从代码调整列大小
【发布时间】:2014-05-10 09:29:23
【问题描述】:

在 WPF 中,我有一个数据网格,其中填充了 ItemSource:

myDataGrid.ItemsSource = myData;

我想将第 0 列的宽度设置为特定宽度。如果我输入此代码:

var tmp = myDataGrid.Columns;

为什么 tmp 为空? 如何从后面的代码调整特定列的大小?

我放了一个图像示例:数据源是“newListModel”,它有 4 行,每个项目有 3 列。如果我尝试获取第 0 列,则会出现异常超出范围

我在 XAML 中只有这个用于数据网格的定义:

<DataGrid x:Name="dataGridListe" HorizontalAlignment="Left" Margin="10,303,0,0" VerticalAlignment="Top" Height="155" Width="676" CanUserAddRows="False" MouseDoubleClick="dataGridListe_MouseDoubleClick"/>

谢谢

【问题讨论】:

  • 出于好奇...为什么哦,您为什么要尝试从代码中设置宽度? WPF 的强大和美妙之处在于使用 XAML(通常绑定到属性......)

标签: c# .net wpf wpfdatagrid


【解决方案1】:

您必须在 XAML 中定义列,并将 AutoGenerateColumns 设置为 False。

<DataGrid x:Name="dataGridListe" VerticalAlignment="Top" AutoGenerateColumns="False" >
        <DataGrid.Columns>                
            <DataGridTextColumn Header="YourProperty1" Binding="{Binding Path=YourProperty1}"/>
            <DataGridTextColumn Header="YourProperty2" Binding="{Binding Path=YourProperty2}"/>
            ....
           </DataGrid.Columns>
 </DataGrid>

然后,你需要指定列的索引

DataGridColumn column = dataGridListe.Columns[0];
column.Width = 200;

【讨论】:

  • 这没有回答“为什么 tmp 为空?”,并且 if tmp 真的 is null,应该产生一个 @ 987654325@.
  • 使用该代码我得到一个超出范围的异常,我不明白为什么!!
  • @Tom 你能发布你的 XAML
  • 已发布。无论如何,数据源在数据网格中正确显示。问题是我尝试获取对列的引用
  • @Tom 检查修改后的答案
猜你喜欢
  • 2011-11-20
  • 2016-01-22
  • 2011-08-20
  • 2011-04-30
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 2011-10-20
  • 2011-01-07
相关资源
最近更新 更多