【问题标题】:WPF drop-down list for auto generated column in datagrid数据网格中自动生成列的 WPF 下拉列表
【发布时间】:2021-08-24 00:16:59
【问题描述】:

当您单击特定表格列的元素时,如何制作一个下拉列表,您可以在其中为该单元格选择一个元素?列是自动生成的。

【问题讨论】:

  • 你到底是什么意思?你有一个包含多个下拉列表的表格,这些下拉列表应该设置它们所在单元格的内容,我没听错吗?
  • 完全无法理解你需要什么。为您的问题添加详细信息。 DataGrid 是如何创建的,针对哪个列表?什么是下拉列表:ComboBox、ContextMenu、Popup?您需要在哪一栏中实现这一点?很明显,如果这是一个完全自动创建的列,那么其中的任何内容都无法更改。有必要以某种方式干预此过程,以便列单元格的行为开始不同于默认值。

标签: c# wpf drop-down-menu datagrid auto-generate


【解决方案1】:

xaml/wpf 中的 Combobox 是这样使用的:

<ComboBox x:Name="some Name" SelectionChanged="comboboxChanged">
    <ComboBoxItem>The Content of your Combobox</ComboBoxItem>
</Combobox>

ComboBoxItems 本质上是下拉部分。您可以根据需要添加任意数量。

在您的后端 (c#) 中,您可以在触发“SelectionChanged”事件后立即获得选定的值。获取所选值的代码可以通过多种方式完成。示例:

private void comboboxChanged(object sender, SelectionChangedEventArgs e){
    string comboboxvalue = comboboxname.Text;
    //Then set associated textblock or label
    labelname.Content = comboboxvalue;
}

上面的代码虽然是静态的。例如,动态生成这些元素可能看起来像这样。 自动生成时,为事件使用内联函数很容易。

for (int i = 0; i < 10; i++){
    ComboBox comboboxname = new ComboBox();
    comboboxname.SelectionChanged += (ss,ee) { string comboBoxValue = comboboxname.Text; labelname.Content = comboBoxValue;}
}

Labelname 是您要设置的标签的名称。在该循环中,您将需要实现一种方法,为每个框指定一个唯一名称,并在其中获取相关标签的名称。你必须自己弄清楚,因为我不知道如何以及究竟是什么生成以及什么是静态的。

您还需要将动态创建的组合框添加到列表面板或网格或您正在使用的任何内容中。像这样工作:

listpanelname.Children.Add(comboboxname);

只需将其添加到“for”循环即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 2011-07-31
    相关资源
    最近更新 更多