WPF,DataGrid列宽为0,也要显示?

货郎大叔 2019-11-21 10:12:12

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2" x:Class="WpfApp1.MainWindow"
mc:Ignorable="d"
Title="MainWindow" x:Name="mywindow" Height="450" Width="800">
<Grid>
<DataGrid x:Name="datagrid1" AutoGenerateColumns="False" Width="400" Height="200">
<DataGrid.Columns>
<DataGridTextColumn Header="姓名" Width="0" Binding="{Binding PersonName}" />
<DataGridTextColumn Header="年龄" Width="0" Binding="{Binding Age}" >
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<Button Content="Button" Width="75" Click="Button_Click" />
</Grid>
</Window>


private void Button_Click(object sender, RoutedEventArgs e)
{
datagrid1.ColumnWidth = DataGridLength.Auto;
ObservableCollection<Person> obc = new ObservableCollection<Person>();
obc.Add(new Person() { PersonName = "张三", Age = 43});
obc.Add(new Person() { PersonName = "李四", Age = 42});
obc.Add(new Person() { PersonName = "王娅", Age = 33});
obc.Add(new Person() { PersonName = "张五", Age = 50});
datagrid1.ItemsSource = obc;
}


上面的代码,DataGrid的两个列的宽度值都设为0,结果为什么还是要显示呢?
...全文
107 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2019-11-25
  • 打赏
  • 举报
回复
引用 2 楼 货郎大叔 的回复:
[quote=引用 1 楼 exception92 的回复:] datagrid1.ColumnWidth = DataGridLength.Auto; 就不要加这句了 另外设置column的 Visibility="Collapsed"即可。
去掉datagrid1.ColumnWidth = DataGridLength.Auto也是一样结果。 其并不是想隐藏列,如果宽度设为2,结果也是那样,是不是系统决定列宽最小值就是那么宽?[/quote] 是的,参见:https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.controls.datagridcolumn.minwidth?view=netframework-4.8#System_Windows_Controls_DataGridColumn_MinWidth
货郎大叔 2019-11-24
  • 打赏
  • 举报
回复
有人知道吗?
货郎大叔 2019-11-23
  • 打赏
  • 举报
回复
引用 1 楼 exception92 的回复:
datagrid1.ColumnWidth = DataGridLength.Auto; 就不要加这句了 另外设置column的 Visibility="Collapsed"即可。
去掉datagrid1.ColumnWidth = DataGridLength.Auto也是一样结果。 其并不是想隐藏列,如果宽度设为2,结果也是那样,是不是系统决定列宽最小值就是那么宽?
exception92 2019-11-22
  • 打赏
  • 举报
回复
datagrid1.ColumnWidth = DataGridLength.Auto; 就不要加这句了
另外设置column的 Visibility="Collapsed"即可。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧