当我绑定(bind)我的 ObservableCollection
给我的DataGrid
与 AutoGenerateColumns
为真。我可以双击要编辑的单元格,然后可以编辑单元格中的文本。
但是当我设置 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,当我插入新行时,绑定(bind)的文本没有设置...当我设置
AutoGeneratedColumns
为 true 它绑定(bind)插入的文本。
最佳答案
数据网格有一个 datagrid 模板列,该列有一个 CellTemplate 和一个 CellEditingTemplate。如果您为两者定义模板,您也可以为两者显式设置绑定(bind)。也许这会解决你的问题。
这是带有两个模板的模板列示例
<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>
希望这可以帮助
关于WPF Datagrid编辑单元格问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17074992/