DataGrid列不再延伸

时间:2014-02-13 16:29:53

标签: c# wpf xaml datagrid wpfdatagrid

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

Collapsed DataGrid Columns

    <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”

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

2 个答案:

答案 0 :(得分:0)

我解决了它:

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

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

如果其他人遇到此问题,请在InitializeComponent();

之后添加WindowName.Show()

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

答案 1 :(得分:0)

供参考:

当DataGrid在ScrollViewer内部时,显然会发生这种情况。因此,如this other answer中所述,如果不需要水平滚动条,则可以将其禁用:

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

否则,您必须为DataGrid设置一个Width。您可以在链接的文章中按照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>