gpt4 book ai didi

c# - WPF- 将更改事件添加到自动生成的 DataGridComboBoxColumn

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:59 25 4
gpt4 key购买 nike

我有一个数据网格,在 DataGrid.AutoGeneratingColumn 事件中,我将一些列更改为 DataGridComboBoxColumns。

与此同时,我还想向该新组合框添加一个选择更改事件,但不知道如何访问 DataGridComboBoxColumn 中的组合框控件。

    private void dgGrid_AutogeneratingColumns(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
var cb = new DataGridComboBoxColumn();
switch (e.PropertyName)
{
case "name":

using (Entities context = new Entities())
{
List<object> fNames = (from x in context.view
select new object {objectname = x.objectname}).ToList<object>();

cb.Header = "xxx";
cb.ItemsSource = xxx;
cb.SelectedItemBinding = new Binding("xxx");
e.Column = cb;

//Get reference to combobox in this new column
//Add event to it
//?????

}
break;
//more ....
}
}

最佳答案

您不能从 DataGrid.AutoGeneratingColumn 事件处理程序访问 ComboBox 实例,因为 ComBox 仅在该列的单元格进入编辑模式时创建,并且每次该单元格进入编辑模式时都会创建新的 ComboBox 实例。

这是一个示例代码,如何通过 DataGridComboBoxColumn.EditingElementStyle 执行您想要的操作通过设置属性 EventSetter对于 Selector.SelectionChangedEvent (ComboBox继承自Selector):

private void dgGrid_AutogeneratingColumns(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
switch (e.PropertyName)
{
case "name":

var cb = new DataGridComboBoxColumn();

// Old...
cb.Header = "Name";
cb.ItemsSource = new List<string>() { "Option1", "Option2", "Option3" };
cb.SelectedItemBinding = new Binding("name");

// NEW
cb.EditingElementStyle = new Style(typeof(ComboBox))
{
Setters =
{
new EventSetter(Selector.SelectionChangedEvent, new SelectionChangedEventHandler(OnComboBoxSelectionChanged))
}
};

e.Column = cb;
break;
}
}

private static void OnComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
{
// We must check that both RemovedItems and AddedItems are not empty,
// because this event also fires when ComboBox is initialized (when entering edit mode), but then RemovedItems is empty.
if (e.RemovedItems.Count > 0 && e.AddedItems.Count > 0)
{
var newlySelectedName = (string)e.AddedItems[0];
}
}

关于c# - WPF- 将更改事件添加到自动生成的 DataGridComboBoxColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30870814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com