WPF DataGrid - зачем дополнительный столбец

У меня есть приложение WPF, которое использует DataGrid для отображения некоторых данных. Когда я запускаю программу, появляется дополнительный столбец, как показано здесь: enter image description here

Вот как это выглядит при проектировании в VS2010enter image description here

Я отключил AutoGenerateColumns для сетки данных и указал столбцы по отдельности как таковые (это пользовательский элемент управления):

<Grid Margin="10,10,10,10">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition />
    </Grid.RowDefinitions>


    <DataGrid x:Name="EmployeeHours" AutoGenerateColumns="False" ItemsSource="{Binding EmployeeHoursLastWeek}" Width="Auto">
        <DataGrid.Columns>
            <DataGridTextColumn Header="PerceptionistID" Binding="{Binding PerceptionistID}" Width="100" />
            <DataGridTextColumn Header="Week Of" Binding="{Binding WeekOf, StringFormat={}{0:MM/dd/yyyy}}" Width="75" />
            <DataGridTextColumn Header="Regular Hours" Binding="{Binding WorkHours}" Width="100" />
            <DataGridTextColumn Header="PTO Hours" Binding="{Binding PTOHours}" Width="100" />
            <DataGridTextColumn Header="Holiday Hours" Binding="{Binding HolidayHours}" Width="100" />
        </DataGrid.Columns>
    </DataGrid>

    <Button x:Name="ImportHoursButton" Content="Import Hours" 
            Command="{Binding ImportHoursCommand}" 
            Height="25" Width="100" Margin="10"
            VerticalAlignment="Bottom" HorizontalAlignment="Right"                
            Grid.Row="1" />
</Grid>

У меня также есть MainWindowView, который использует инъекцию для отображения представлений как таковых (это обычное окно):

<Window x:Class="Sidekick.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:Sidekick.ViewModel"
        xmlns:vw="clr-namespace:Sidekick.View"
        Title="Sidekick">

    <!-- Typically done in a resources dictionary -->    
    <Window.Resources>
        <DataTemplate DataType="{x:Type vm:EmployeeHoursViewModel}">
            <vw:EmployeeHoursView />
        </DataTemplate>
    </Window.Resources>

    <StackPanel>
        <ItemsControl ItemsSource="{Binding ViewModels}" Margin="3" />
    </StackPanel>

</Window>

В дизайнере я указал MainWindowView и EmployeeHoursView как Auto Size root, поскольку я хочу, чтобы окно было достаточно большим для размещения сетки и кнопки. Однако, когда я запускаю программу, у меня появляется дополнительный столбец в сетке данных, и это делает окно программы примерно в два раза больше (как по ширине, так и по высоте), чем нужно для EmployeeHoursView. Как я могу закодировать это так, чтобы окно моей программы было достаточно большим для EmployeeHoursView без указания конкретных значений? Что вызывает появление этого дополнительного столбца?

27
задан Dave Clemmer 1 February 2013 в 08:26
поделиться