C# 带有星形列的DataGrid可调整整个DataGrid的大小
我有一个WPF数据网格,有两列;我希望第二列自动适应网格,因此我将其宽度设置为“*”。然而,在运行时,DataGrid会调整到一个荒谬的宽度 以下是我的基本标记,其中(我认为)删除了无关的控件和属性:C# 带有星形列的DataGrid可调整整个DataGrid的大小,c#,wpf,xaml,datagrid,wpfdatagrid,C#,Wpf,Xaml,Datagrid,Wpfdatagrid,我有一个WPF数据网格,有两列;我希望第二列自动适应网格,因此我将其宽度设置为“*”。然而,在运行时,DataGrid会调整到一个荒谬的宽度 以下是我的基本标记,其中(我认为)删除了无关的控件和属性: <Grid> <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> <Grid> <St
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Grid>
<StackPanel>
<DataGrid Name="MyGrid" AutoGenerateColumns="False"
CanUserAddRows="False" CanUserReorderColumns="False"
CanUserResizeColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Column 1" Width="Auto" Binding="{Binding Field1}"/>
<DataGridTextColumn Header="Column 2" Width="*" Binding="{Binding Field2}"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Grid>
</ScrollViewer>
</Grid>
如中所述,但没有运气。我还尝试将HorizontalScrollBarVisibility设置为Disabled,但随后一切都消失了(严重)
我还应该提到的是,所有这些都存在于一个UserControl中,它位于另一个UserControl中,然后位于窗口中,这可能与所有内容“消失”有关(我怀疑宽度已经疯了,所有内容都“离开了窗口”)。尝试在数据网格之前删除所有内容,简化布局。DataGrid已经在其默认模板中嵌入了一个ScrollViewer。另外,使用StackPanel,您允许其子对象填充所有可用空间-StackPanel会根据其内容的大小进行拉伸。因此,您的
DataGrid
延伸到无限远
我还将DataGrid的Name属性更改为x:Name,原因如下:
尝试删除DataGrid之前的所有内容,以简化布局。DataGrid已经在其默认模板中嵌入了一个ScrollViewer。另外,使用StackPanel,您允许其子对象填充所有可用空间-StackPanel会根据其内容的大小进行拉伸。因此,您的
DataGrid
延伸到无限远
我还将DataGrid的Name属性更改为x:Name,原因如下:
您正在使用.Net 4.0吗?我回忆起大约2-3周前关于同一主题的另一个帖子。我认为这是4.0的一个bug,它在3.5中工作。是的,使用.NET4.0。如果这是一个重复的问题,如果有人能给我指出前面的问题,我将不胜感激。我找了它,但找不到。在WPF标记下查找并返回一个方法,您可能会找到它。您正在使用.NET4.0吗?我回忆起大约2-3周前关于同一主题的另一个帖子。我认为这是4.0的一个bug,它在3.5中工作。是的,使用.NET4.0。如果这是一个重复的问题,如果有人能给我指出前面的问题,我将不胜感激。我找了它,但找不到。在WPF标签下查找并返回一个方法,您可能会找到它。
Width="{Bidning ElementName=MyGrid, Path=ActualWidth}"
<DataGrid
x:Name="MyGrid"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserReorderColumns="False"
CanUserResizeColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Column 1" Width="Auto" Binding="{Binding Field1}"/>
<DataGridTextColumn Header="Column 2" Width="*" Binding="{Binding Field2}"/>
</DataGrid.Columns>
</DataGrid>