2010-07-28 117 views
0

我在一個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

回答

0

您發佈將不顯示任何類型名稱中的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