2013-06-12 124 views
4

當我將我的ObservableCollection綁定到我的DataGridAutoGenerateColumns爲true時。我可以雙擊要編輯的單元格,然後編輯單元格中的文本。WPF Datagrid編輯單元問題

但是,當我將AutoGenerateColumns設置爲false並且想使用自定義DataGridTextColumns時,我也可以雙擊單元格。但是在那裏的文本被刪除,所以我有一個空字符串,而不是我想要編輯的那一個。

在這個問題上的任何想法?

這是我DataGrid

<DataGrid ItemsSource="{Binding Tasks}" 
      Margin="0,10,30,0" 
      AutoGenerateColumns="False" 
      Style="{DynamicResource DataGridStyle}" 
      HorizontalScrollBarVisibility="Hidden" 
      SelectedItem="{Binding SelectedTask}"> 

    <DataGrid.Columns> 
     <DataGridTextColumn> 
      <DataGridTextColumn.ElementStyle> 
       <Style TargetType="TextBlock"> 
        <Setter Property="Margin" Value="6,0,0,0" /> 
        <Setter Property="Text" Value="{Binding Description}" /> 
        <Setter Property="VerticalAlignment" Value="Center" /> 
       </Style> 
      </DataGridTextColumn.ElementStyle> 
     </DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 

編輯: 我還注意到,當AutoGenerateColumns設置爲false,當我插入新行綁定的文字是沒有得到設置... 當我將AutoGeneratedColumns設置爲true時,它會綁定插入的文本。

回答

6

數據網格有一個datagrid模板列,該列有一個CellTemplate和一個CellEditingTemplate。如果你爲這兩個模板定義模板,你也可以明確地爲它們設置綁定。也許這會解決你的問題。

這裏是模板列的樣品有兩個模板

<DataGridTemplateColumn Header="TEXT" > 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding YourBindingProperty}" Style="{StaticResource YourEditStyle}"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
    <DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <TextBox x:Name="EditTextbox" Text="{Binding YourBindingProperty, Mode=TwoWay, UpdateSourceTrigger=LostFocus, ValidatesOnDataErrors=True}" Style="{StaticResource YourEditStyle}"> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellEditingTemplate> 
</DataGridTemplateColumn> 

希望這有助於

+0

就像一個魅力!謝謝 :) – koala