DataGrid列不再延伸

问题描述 投票:0回答:2

我注意到我的项目中的DataGrid列不再延伸到DataGrid宽度。我唯一做的就是更改Assmbly名称。在XAML设计师中,他们很紧张。

    <DataGrid  x:Name="dg" Grid.Row="4" RowHeaderWidth="0" AutoGenerateColumns="False" 
     HorizontalGridLinesBrush="AliceBlue" AlternationCount="2">                

                <DataGrid.Columns>
                    <DataGridTemplateColumn Header="File"  IsReadOnly="True" Width="*" CanUserSort="True" SortMemberPath="File" >
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock  Text="{Binding Path=FileName}" MouseDown="FileName_MouseDown" />
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

//other columns are similar

                </DataGrid.Columns>                
            </DataGrid>

我尝试过的:

  1. 重建解决方案
  2. 删除“bin”文件夹并重建
  3. 我使用旧版本,这是好的,并更改了程序集名称(这只是备份之间的差异),我比较了这两个版本之间的所有文件(在codecompare和notepad ++中,逐个),所有文件都是相同的,但是一个延伸和其他没有。这两个版本都很旧,所以我不能回去。
  4. 使用ColumnWidth =“*”创建新的Datagrid AutogenerateColumns =“True”
  5. Horizo​​ntalContentAlignment =“Stretch”和Horizo​​ntalAlignment =“Stretch”

我想到了一些想法。无论多么愚蠢,请提出任何想法。谢谢!

c# wpf xaml datagrid wpfdatagrid
2个回答
0
投票

我解决了它:

唯一的区别是我在初始化后有好的版本MyWindow.Show();。我尝试了多次评论和取消注释这一行,这是修复。

MyWindow只是xaml中定义的窗口的名称,而show()不执行任何操作,因为无论如何窗口都是可见的。

如果其他人有这个问题,只需在InitializeComponent()之后添加WindowName.Show();

除非你们其中一个人能想到这个原因,否则我认为这是一个错误。


0
投票

以供参考:

当DataGrid在ScrollViewer中时,显然会发生这种情况。所以,正如this other answer所说,如果你不需要水平滚动条,你可以禁用它:

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">

否则,您必须为DataGrid提供宽度。您可以根据sa_ddam213在链接帖子中的答案创建一个虚拟元素:

<ScrollViewer HorizontalScrollBarVisibility="Auto">
    <Grid x:Name="grid" MinWidth="200">
        <DataGrid Width="{Binding ElementName=grid, Path=ActualWidth}">
            <DataGrid.Columns>
                <DataGridCheckBoxColumn Header="Column A" Width="1*"/>
                <DataGridCheckBoxColumn Header="Column B" Width="1*"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</ScrollViewer>
© www.soinside.com 2019 - 2024. All rights reserved.