wpf - WPF Datagrid Cell 的 DataTemplate 的更改导致不想要的结果
问题描述
我有一个 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>
我还有第二个“普通”{not modified} 列,称为 ID(int 类型)。
不想要的结果如下图所示:
第 1 步:我打开我的数据网格所在的用户控件:
第2步:我单击第一个单元格在其中写一些东西(出于某种原因,只需单击一次即可将光标放入其中。“普通”单元格需要2个-一个用于焦点,一个-将光标放入其中)
第 3 步:我在里面写了一些东西(这个单元格仍然聚焦)
第 4 步:我第一次单击第二个单元格(它只获得焦点)。
第 5 步:我再次单击第二个单元格(光标在那里并且自动写入默认值)。此时第一个单元格中的值消失了。
第 6 步:我在第二个单元格中写下我的值:
第 7 步:我按下键盘上的 Enter 按钮,这会发生
可能原因比较简单,但我发现只用文字很难形容。
解决方案
该CellTemplate
列的 应该包含一个只读的TextBlock
. 您应该将可编辑的内容TextBox
放在CellEditingTemplate
.
这就是内置的DataGridTextColumn
工作原理。默认情况下您会看到 a TextBlock
,当您双击单元格进入编辑模式时,会TextBox
出现 a。的Text
属性TextBlock
和 的Text
属性TextBox
绑定到同一个源属性。
推荐阅读
- swift - TitleView 程序恢复后消失
- ruby-on-rails - Watir 返回不正确的子表
- php - PHP Regex:如何获取地址字符串中的第一个数字?
- mysql - ERROR 1075 只能有一个自动列,并且必须将其定义为键。帮我确定如何保留 ReportID 的外键
- ios - 应用程序在 Xcode 上构建并在 Testflight 上测试后启动到粉屏和黑屏
- three.js - 如何创建立方体元素数组以在 3.js 中创建棋盘
- reactjs - 当某些路由位于自定义组件内时,反应重定向不起作用
- java - Onclick Recycler View 中的按钮不起作用
- sockets - 客户端和服务器窗口都是空白的
- javascript - Mapbox - 在缩放级别 15 时一切都消失了,在 14.99 时很好