在不同行中添加具有不同值的 DataGrid 复选框列

2023-12-22

我有一个绑定到对象 PlacementData (PD) 的 DataGrid。 PD 具有属性“P_Unit”。

 public class PlacementData 
 {
    public bool PIsChecked { get; set; }
    public string PlacementHeader { get; set; }
    public string P_NumberOfCases { get; set; }
    public int P_Value1 { get; set; }
    public int P_Value2 { get; set; }
    public int P_Value3 { get; set; }
    public int P_Value4 { get; set; }
    public int P_Value5 { get; set; }
    public string P_Unit { get; set; }
}

在我的 DataGrid 中,我在 DataTemplateColumn 中添加了一个组合框。

<DataGridTemplateColumn x:Name="UnitColumn1" Header="Unit" MinWidth="80" >
     <DataGridTemplateColumn.CellTemplate>
           <DataTemplate>
                  <ComboBox Text="{Binding P_Unit}">
                         <ComboBoxItem Content="kg/m3" IsSelected="True"/>
                         <ComboBoxItem Content="gm/cm3"/>
                  </ComboBox>
            </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

在窗口开始时,我将 itemsource 设置为 4 行并添加了标题。

    private List<PlacementData> datagrid1CollectionData()
    {
        List<PlacementData> authors = new List<PlacementData>();

        authors.Add(new PlacementData()
        {
            PlacementHeader = "Based On Injection Rate",

        });
        authors.Add(new PlacementData()
        {
            PlacementHeader = "Based On Viscosity"
        });
        authors.Add(new PlacementData()
        {
            PlacementHeader = "Based On Sheer Thinning"
        });
        authors.Add(new PlacementData()
        {
            PlacementHeader = "k"
        });


        return authors;
    }

    dataGrid1.ItemsSource = datagrid1CollectionData();

我的每一行都需要不同的单位组合框值。例如,第一行需要“公斤,克”,第二行需要“米,厘米,英尺”,第三行需要“升,毫升,吨”,第四行需要为空。

我如何设置这些值?我认为在创建每一行时,我可以创建一个列表并将其作为项目源分配给复选框。但在上面的代码中这怎么可能呢?每行复选框的复选框 Itemsource ???


我建议使用 EditCellTemplate 但这取决于您和任务要求。 在 DataTemplate 的组合框中使用自定义 IValueConverter (我已使用 PlacementHeader 作为依赖属性,您可以使用实际需要的内容或 PlacementData 本身):

 <ComboBox SelectedValue ="{Binding P_Unit}" ItemsSource="{Binding PlacementHeader, Converter={StaticResource DependedValuesConverter}}">
                  </ComboBox>

和转换器的一些示例就像想法一样:

    public class DynamicValuesConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value != null)
            switch (value.ToString())
            {
                case "Based On Injection Rate":
                    return new[] { "kg/m3", "gm/cm3" };
                case "Based On Viscosity":
                    return new[] { "some other..." };
            }
        return new string[0];
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

要在组合框上实现多重选择,您可以使用一些开源检查组合框 http://wpftoolkit.codeplex.com/wikipage?title=CheckComboBox.

EDIT根据您的评论:您可以在数据模板可见的任何地方添加转换器,我已直接添加到数据模板只是为了演示:

                    <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <DataTemplate.Resources>
                            <local:DynamicValuesConverter x:Key="DependedValuesConverter" />
                        </DataTemplate.Resources>
                        <ComboBox SelectedValue="{Binding P_Unit}" ItemsSource="{Binding PlacementHeader, Converter={StaticResource DependedValuesConverter}}"></ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>

“local”必须指向您的动态值转换器命名空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在不同行中添加具有不同值的 DataGrid 复选框列 的相关文章

随机推荐

  • Micronaut:如何获取 Prometheus 格式的指标?

    我应该如何配置 Micronaut 才能获得 metrics普罗米修斯格式 Used 微型机器人1 0 0 M3 Now micronaut metrics enabled true export prometheus enabled tr
  • 如何在swift中编写通用工厂方法?

    我不知道如何 如果可能的话 编写调用从常见已知基类 继承的泛型类型的构造函数的方法 以创建 T 的一些实例 而无需求助于显式工厂函数 即使用所有花哨的功能由类型推断提供 在操场上运行的示例 Let there be classes MyPo
  • JavaFx PieChart:控制大小

    我是 JavaFX 新手 我正在调整用 JavaFX 开发的应用程序 该应用程序使用大量彼此相邻的饼图 所有饼图都作为同一饼图的子项HBox 这些图表没有相同数量的类别 并且由于某种原因 其中一些类别变得比其他类别更大 有什么办法可以控制它
  • WebApi 上的 AngularJS 和 OWIN 身份验证

    我已经在我的 WebApi 上实现了基于 OWIN 令牌的身份验证 我还通过调用启用了 CORSapp UseCors Microsoft Owin Cors CorsOptions AllowAll 我可以从 angularjs Web
  • `create_task()` 中的任务何时在 asyncio 中执行?

    在下面的代码中 import asyncio async def task func print in task func return the result async def main loop print creating task
  • Sublime Text多光标快捷方式

    我是 emacs 的忠实用户 我非常喜欢这样一个事实 无需使用鼠标即可完成所有操作 我认为这个功能让 emacs 非常高效 我也是 Linux 上的 Sublime Text 的忠实粉丝 我喜欢您启用的多光标功能Ctrl left mous
  • 动态父浮动div 100%高度没有绝对位置?

    我在这里读了很多书 但找不到我的答案的解决方案 我有一个容器 div 有多个浮动的左 div 如下面的 html 所示 div class catbg0 div class catb1 div div class catb2 Board N
  • 如何使用 Excel 公式仅删除前导和尾随空格,同时在单词之间保留空格?

    在Excel中 TRIM 将删除文本前后的所有空格 同时还会删除单词之间的任何重复空格 是否有一个公式或其组合可以起到相同的作用TRIM 但在单词之间保留空格 在下面的示例中 我正在寻找一个可以实现虚构公式 WXYZ 的公式 TRIM Om
  • 单击“查看更多”按钮后文本视图会展开或收缩

    在我的 tableView 单元格中 我有一个 textView 我通过 JSON 获取其字符串并动态更新单元格高度 如下所示 func tableView tableView UITableView heightForRowAt inde
  • 搜索 NSString 是否包含值

    我有一些由几个字符构造的字符串值 我想检查它们是否存在于另一个 NSString 中 不区分大小写和空格 示例代码 NSString me toBe NSString target abcdetoBe than check if me is
  • 定义 JavaScript 源文件的字符编码

    我想向我的德国用户打印一条状态消息 其中包含变音符号 我还希望它们位于源文件中 而不必仅为消息下载和解析一些额外的文件 但是 我似乎找不到一种方法来定义 JS 源文件的编码 有没有类似HTML的东西http equiv 或者我应该在 HTT
  • PyTorch:用于训练和测试/验证的不同前向方法

    我目前正在尝试延长a model https github com microsoft MASS这是基于 FairSeq PyTorch 的 在训练过程中 我需要训练两个编码器 一个使用目标样本 另一个使用源样本 所以当前的forward函
  • 将 QPair 转换为 QVariant

    我有以下问题 我想通过TCP传输数据 并为此编写了一个函数 为了获得最大的可重用性 函数模板是f QPair
  • 在 C++ 中进行事件处理的正确方法是什么?

    我有一个应用程序需要按以下方式响应某些事件 void someMethodWithinSomeClass while true wait for event if event SomeEvent doSomething continue i
  • 在 Scala 中初始化通用变量

    如何在 Scala 中声明泛型变量而不对其进行初始化 或初始化为任何值 def foo T var t T tried null t def foo T var t T null asInstanceOf T t 而且 如果你不喜欢其中涉及
  • 将 setvbuf() 与 STDIN 流结合使用

    我正在编写一个小型 C 程序 它必须接受大于 4096 字节的输入流 我确实找到了一个推荐使用的帖子设置vbuf here 使 fgets 在 Linux 上发出更长的 read 调用 https stackoverflow com q 3
  • 理解图表[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 询问我们的问题推荐或查找书籍 工具 软件库 教程或其他场外资源与 Stack Overflow 无关 因为它们往往会吸引固执己见的答案和垃
  • scss mixin 中的选择器有效吗?

    CSS 语法一般是 selector declarations 我主要看到 mixin 负责处理declaration part example mixin border radius rad border radius rad and u
  • 即使在 CoreWebView2InitializationCompleted 事件发生后,EnsureCoreWebView2Async 也未准备好

    根据 Microsoft 在 Windows 窗体中开始使用 webView2 截至 2021 年 3 月 9 日 我得到了以下代码 未设置 webView2 source 从 Form Designer cs 中编辑 public For
  • 在不同行中添加具有不同值的 DataGrid 复选框列

    我有一个绑定到对象 PlacementData PD 的 DataGrid PD 具有属性 P Unit public class PlacementData public bool PIsChecked get set public st