wpf - DataGridTemplateColumn.CellEditingTemplate ComboBox 在单击两次之前不显示
问题描述
我
DataGridTemplateColumn.CellEditingTemplate
在DataGrid
. 发生的事情是我可以看到所选项目,但ComboBox
直到我单击它两次以启用编辑时才看到。
基本上,我希望它表现得像 aCellTemplate
但可以像CellEditingTemplate
. 我怎样才能做到这一点?
我更喜欢在代码中Xaml
而不是在代码中的解决方案。
我试过Style.Trigger
设置DataGridCell
如下
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="HasContent" Value="True">
<Setter Property="IsEditing" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
还尝试将 ComboBox IsEditable 属性设置为 True
<DataGridTemplateColumn Header="Material" MinWidth="100">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox IsEditable="True" DisplayMemberPath="Code" SelectedItem="{Binding Path=Material,Mode=TwoWay}" ItemsSource="{Binding Source={x:Reference MaterialDef}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
代码很简单
<DataGridTemplateColumn MinWidth="200" Header="Material" >
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox MinWidth="200" SelectedValuePath="{Binding Path=Material,Mode=TwoWay}" HorizontalAlignment="Right" Grid.Row="1" Grid.Column="2" DisplayMemberPath="Code" ItemsSource="{Binding Source={x:Reference Materials}}" Margin="2" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
解决方案
需要同时设置CellEditingTemplate
和CellTemplate
。如下所示:
`
<DataGridTemplateColumn MinWidth="200" Header="Material" >
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox MinWidth="200" SelectedValuePath="{Binding Path=Material,Mode=TwoWay}" HorizontalAlignment="Right" Grid.Row="1" Grid.Column="2" DisplayMemberPath="Code" ItemsSource="{Binding Source={x:Reference Materials}}" Margin="2" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox MinWidth="200" SelectedValuePath="{Binding Path=Material,Mode=TwoWay}" HorizontalAlignment="Right" Grid.Row="1" Grid.Column="2" DisplayMemberPath="Code" ItemsSource="{Binding Source={x:Reference Materials}}" Margin="2" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
`
您还可以DataTemplate
在资源中包含并引用它。
推荐阅读
- python - python中str(77)和int(77)有什么区别
- c# - 如何将此查询转换为 linq?
- reactjs - Url 和 img 变量不会在我的反应应用程序中呈现
- java - Java 分配类值
- python - file.write 命令的奇怪行为
- amazon-web-services - 我在哪里可以找到有关 Maria DB 中最大 bin 日志文件的变量(我的意思不是说 max_binlog_size)
- javascript - Javascript日期返回错误的时间
- travis-ci - 如何修复与 doxygen 和 github-page 的完全兼容性
- angular - 在路由器链接之间切换时未加载数据
- typescript - 如何伪造 Typescript 命名空间的间接调用函数?