XAML - DataGrid列在数据加载到行时移动

时间:2017-04-13 03:57:54

标签: wpf xaml

我有一个DataGrid,可以从XML文件中加载它的单元格信息。当数据加载到网格时,您可以看到单元格略微向右移动,左侧出现一个微弱的单元格。我想让它停下来。

我玩过所有布局选项。我试过去掉边框。我对Visual Studio中的Columns部分做了很多工作。

除了最右边的那个之外,所有的cels都设置为特定的宽度。该单元格设置为“自动”,仅包含在XAML中定义的按钮,而不包含XML。

<Window.Resources>
    <Style TargetType="DataGridCell">
        <Setter Property="TextBlock.TextAlignment" Value="Left"/>
    </Style>
    <Style TargetType="DataGridColumnHeader">
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
    </Style>
</Window.Resources>

                    <DataGrid x:Name="dgActions" Margin="10,93,20,10" AlternatingRowBackground="#FFB4B4B4" RowBackground="White" IsReadOnly="True" SelectionMode="Extended"
                          VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" ItemsSource="{Binding}" AutoGenerateColumns="False" CanUserResizeColumns="False" UseLayoutRounding="False">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Name" Binding="{Binding Element[name].Value}" Width="175"/>
                        <DataGridTextColumn Header="KB#" Binding="{Binding Element[knowledge].Value}" Width="50"/>
                        <DataGridTextColumn Header="Description" Binding="{Binding Element[description].Value}" Width="665"/>
                        <DataGridTemplateColumn Header="Send" Width="Auto">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Button x:Name="btnSendScript" Content="Send" CommandParameter="{Binding}" Click="btnSendScript_Click" FlowDirection="LeftToRight" HorizontalAlignment="Right"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                    </DataGrid.Columns>
                </DataGrid>

Before the XML values are loaded

以下是数据加载时会发生的情况......

When the XML values are loaded...

1 个答案:

答案 0 :(得分:1)

剩下的空间是DataGridRowHeader。 要删除它,请使用以下Style

       <DataGrid ...>
            <DataGrid.RowHeaderStyle>
                <Style TargetType="DataGridRowHeader">                    
                    <Setter Property="Width" Value="0"/>
                </Style>
            </DataGrid.RowHeaderStyle>
            ...
       </DataGrid>