2013-12-17 14 views
7

Mam proste sterowanie danych zdefiniowany następującoCzy istnieje sposób na styl WPF DataGrid newItem zastępczy

<DataGrid x:Name="ScheduleDataGrid" AutoGenerateColumns="False" CanUserAddRows="True" CanUserDeleteRows="True" Margin="5" ItemsSource="{Binding ScheduleItems}"> 
    <DataGrid.Columns> 

     <DataGridTextColumn...></DataGridTextColumn> 
     .... 
     <DataGridTextColumn...></DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 

mam określonego CanUserAddRows = „True”. Zgodnie z reklamą powoduje to umieszczenie pustego wiersza u dołu siatki, aby użytkownik mógł dodać nowy wiersz.

Czy istnieje sposób na ułożenie nowego elementu zastępczego elementu niezależnie od reszty siatki?

Odpowiedz

8

Tak, można zmienić ten wiersz zastępczy.

Spójrz na ten przykład, który właśnie napisałem.

<Window.Resources> 
    <Style TargetType="{x:Type DataGridRow}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding}" Value="{x:Static CollectionView.NewItemPlaceholder}"> 
       <Setter Property="Background" Value="Yellow"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
<Grid> 
    <DataGrid AutoGenerateColumns="False" CanUserAddRows="True" ItemsSource="{Binding List}"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Test" Binding="{Binding Path=Name, Mode=TwoWay}"/> 
     </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

Ten wiersz zastępczy pojawi się na żółtym tle.

+0

Czy istnieje sposób na umieszczenie 'NewItemPlaceHolder' w górnym rzędzie siatki? –

+1

@AbinMathew, Tak ScheduleItems.NewItemPlaceHolderPosition = System.ComponentModel.NewItemPlaceholderPosition.AtBeginning; –