问题描述
在我的C#WPF应用程序(.NET 4.0)中,我有一个来自代码的数据杂志,包括datagridcomboboxcolumn:
public static DataGridComboBoxColumn getCboCol(string colName, Binding textBinding) { List<string> statusItemsList = new StatusList(); DataGridComboBoxColumn cboColumn = new DataGridComboBoxColumn(); cboColumn.Header = colName; cboColumn.SelectedItemBinding = textBinding; cboColumn.ItemsSource = statusItemsList; return cboColumn; }
使用"开始"事件进行不同的检查.
如果支票返回好的,我想直接展开ComboBox,否则编辑模式将被取消:
void dataGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e) { ... if(notOK) e.Cancel; else { DataGridComboBoxColumn dgCboCol = (DataGridComboBoxColumn)e.Column; // expand dgCboCol } ... }
问题:如何以编程方式扩展组合?开头事件是正确的选择吗?
答案:
void dataGrid_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e) { if (e.EditingElement.GetType().Equals(typeof(ComboBox))) { ComboBox box = (ComboBox)e.EditingElement; box.IsDropDownOpen = true; } }
推荐答案
来自DataGridBeginningEditEventArgs,您可以访问要像这样编辑的单元格的生成元素:
var contentComboBox = e.Column.GetCellContent(e.Row) as ComboBox;
但是,我不确定这是否会获得您需要的实际组合. DataGrids可以为每个单元格生成两个不同的元素,具体取决于它们是否处于编辑模式(仅读取和读写元素).由于BeginningEdit在输入编辑模式之前发生,因此将获得只读元素.
在此处理此操作的更好事件可能是准备cellforedit ,它将在数据项上实际调用BeginEdit后发射(换句话说,如果未取消BeginningEdit).在这种情况下,您可以直接通过编辑属性.
其他推荐答案
Take a look at this
)尝试单击网格上的设置编辑模式,然后使用CellClick事件获取ComboBox并扩展它.
dataGrid.BeginEdit(true); ComboBox comboBox = (ComboBox)dataGrid.EditingControl; comboBox.IsDropDownOpen = true;
相关问答
如何绑定wpf DataGridComboBoxColumn
WPF DataGridComboBoxColumn的风格
Wpf datagridcomboboxcolumn问题
如何在DataGridComboboxColumn LTEMS WPF中添加背景颜色?
wpf如何在datagridcomboboxcolumn datagridview中获取选定项的索引
WPF--以DataGridComboBoxColumn为例
WPF DataGridComboBoxColumn绑定问题
DataGridComboBoxColumn不更新模型WPF
WPF-DataGridComboboxColumn中的绑定错误
用MVVM绑定一个WPF DataGridComboBoxColumn