我有一个WPF DataGrid,并且已经修改了它的第一列的单元格模板,如下所示:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid Margin="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Text="{Binding W_NAME, Mode=TwoWay}"
BorderThickness="0"
Background="Transparent"/>
<Button Grid.Column="1" Width="20"
Background="Transparent"
IsEnabled="{Binding CantFound}"
HorizontalAlignment="Right">
<StackPanel>
<Image Source="/Resources/Pictures/Search.png"/>
</StackPanel>
</Button>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
我还有第二个“普通”(未修改)列,称为ID(整数类型)。
出现不想要的结果,如下所示:
步骤1:我打开数据网格所在的用户控件:
第2步:我单击第一个单元格以在其中写一些内容(由于某种原因,只需单击一次即可将光标放在其中。一个“普通”单元格需要2-一个焦点和一个-将光标放在其中)
第3步:我在其中写了一些内容(此单元格仍处于聚焦状态)
第4步:我第一次单击第二个单元格(并且仅获得焦点)。
第5步:我再次单击第二个单元格(光标在那里,默认值自动写入)。此时第一个单元格中的值将消失。
第6步:我在第二个单元格中写了我的值:
第7步:我按下键盘上的Enter键,就会发生这种情况
也许它的原因相对简单,但我认为仅凭文字很难很好地描述它。
答案 0 :(得分:1)
该列的CellTemplate
应该包含只读的TextBlock
。您应将可编辑的TextBox
放在CellEditingTemplate
中。
内置DataGridTextColumn
就是这样工作的。默认情况下,您会看到一个TextBlock
,当您双击该单元格以进入编辑模式时,将出现一个TextBox
。 Text
的{{1}}属性和TextBlock
的{{1}}属性绑定到相同的源属性。