2013-06-12 91 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