Тип данных ItemsSource, отображаемый в DataGrid - PullRequest
0 голосов
/ 28 июля 2010

Я использую DataGrid внутри StackPanel внутри Grid, что делает 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: В крайнем правом столбце показано имя типа ItemsSource http://www.freeimagehosting.net/uploads/04e173120d.png

Приветствия AC

1 Ответ

0 голосов
/ 29 июля 2010

В опубликованном вами XAML не будет отображаться имя типа. Я думаю, что у вас есть еще один элемент управления в строке и столбце 0 таблицы, который отображается за StackPanel, и что содержимое является объектом, который не переопределяет ToString, поэтому он отображает имя типа.

В случае, если это помогает: если вы не хотите, чтобы GridView был шире, чем его предпочитаемый размер, вы можете установить свойство HorizontalAlignment в StackPanel или DataGrid влево, вправо или по центру , (Кроме того, если имя типа данных является частью StackPanel, то установка этого значения на StackPanel должна привести к его повторному скрытию. Если оно не является частью StackPanel, оно не будет перемещаться, если вы установите StackPanel для выравнивания Право или Центр, что может облегчить поиск элемента-отступника.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...