DataSrid中显示的ItemsSource数据类型

时间:2010-07-28 15:03:51

标签: wpf xaml datagrid

我在Grid内部的StackPanel中使用DataGrid,导致GridView比其首选大小更宽。所有列都正确显示,但在最后一列之后,将显示ItemsSource数据类型名称的结尾。显然它是在背景中绘制的,并且在正常情况下被列隐藏。

我尝试添加MinWidth =“0”和Width =“*”的空列,但是如果需要,不会显示水平滚动条。

如何隐藏数据类型文本?

XAML代码:

    <Grid Margin="5,5,5,5"
      Grid.IsSharedSizeScope="True">
    <Grid.RowDefinitions>
        <RowDefinition />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition Width="30" />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <StackPanel Grid.Row="0"
                Grid.Column="0"
                Orientation="Vertical">
        <DataGrid ItemsSource="{Binding BudgetPositions}"
                  IsSynchronizedWithCurrentItem="True"
                  AutoGenerateColumns="False"
                  GridLinesVisibility="None"
                  HeadersVisibility="Column"
                  CanUserAddRows="False"
                  CanUserDeleteRows="False">
            <DataGrid.Resources>
            </DataGrid.Resources>
            <DataGrid.Columns>
                <!-- Budget group column -->
                <DataGridTemplateColumn Header="Budget Group"
                                        Width="Auto">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock DataContext="{Binding GroupName}"
                                       Text="{Binding Value}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

                <!-- Budget position column -->
                <DataGridTemplateColumn Header="Budget Position"
                                        Width="Auto">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock DataContext="{Binding PositionName}"
                                       Text="{Binding Value}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
        <Button Content="Add budget position"
                x:Name="addPositionButton"
                Width="140"
                Command="{Binding BudgetPositions.AddNewCommand}" />
    </StackPanel>
    ...

这是DataGrid的屏幕截图: The rightmost column shows the ItemsSource type name http://www.freeimagehosting.net/uploads/04e173120d.png

干杯AC

1 个答案:

答案 0 :(得分:0)

您发布的XAML不会显示任何类型名称。我最好的猜测是你在StackPanel后面的Grid的第0行和第0列中有另一个控件,并且内容是一个不覆盖ToString的对象,因此它显示了类型名称。

如果有帮助:如果您不希望GridView比其首选大小更宽,则可以将StackPanel或DataGrid上的HorizontalAlignment属性设置为Left,Right或Center。 (另外,如果数据类型名称是StackPanel的一部分,那么在StackPanel上设置它应该会再次隐藏它。如果它不是StackPanel的一部分,那么如果你将StackPanel设置为对齐它就不会移动右或中心,这可能使叛徒元素更容易找到。)