DataGrid中显示的ItemsSource数据类型

DataGrid中显示的ItemsSource数据类型

问题描述:

我在一个GridPanel内部使用了一个DataGrid,导致GridView比它的首选大小更宽。所有列都正确显示,但在最后一列后显示ItemsSource数据类型名称的末尾。显然它在背景中被绘制,并且在正常情况下被列隐藏。DataGrid中显示的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

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

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

+0

这不是我的XAML,它显示的是typename,它是DataGrid。该文本不在DataGrid的后面,但在DataGrid的列后面。 DataGrid的样式应用于类型名称文本。 – 2010-07-29 12:10:32

+0

@Anonymous Coward:你有DataGrid的自定义模板还是自定义样式?你在跑什么主题?如果我运行在新的WPF项目中发布的XAML并添加足够的数据上下文以使绑定正常工作,则我看不到任何类型名称显示。你是否在一个空的项目上得到这种行为? – Quartermeister 2010-07-29 12:22:32

+0

你说得对,当然。我忘了删除我的“修复”。抱歉。 – 2010-07-29 12:40:53