【问题标题】:combobox with checkbox within a WPF DataGridWPF DataGrid 中带有复选框的组合框
【发布时间】:2014-10-14 17:56:52
【问题描述】:

我需要在 WPF 的 DataGrid 中显示带有复选框选项的组合框。请为此提供任何解决方案。

我试过下面的代码

<toolkit:DataGridTemplateColumn Header="Template">
                <toolkit:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox>
                            <ComboBoxItem BindingGroup="{Binding Program}">
                                <StackPanel Orientation="Horizontal">
                                    <CheckBox IsChecked="{Binding IsChecked}" Width="20" />
                                    <TextBlock Text="{Binding Program}" Width="100" />
                                </StackPanel>
                            </ComboBoxItem>
                        </ComboBox>
                    </DataTemplate>
                </toolkit:DataGridTemplateColumn.CellTemplate>
            </toolkit:DataGridTemplateColumn>

会这样输出

请任何人帮助加载组合框中的项目集合并更正我的代码。

CS 代码:

  private void resultGrid_Loaded(object sender, RoutedEventArgs e)
    {
        var programs = new List<Programs>();
        programs.Add(new Programs("test", false));
        programs.Add(new Programs("test1", false));
        programs.Add(new Programs("test2", true));

        //var grid = sender as DataGrid;
        resultGrid.ItemsSource = programs;
        Combo.ItemsSource = programs;            

    }

还有模特:

  public class Programs
{
   public Programs(string Program, bool IsChecked)
   {
       this.Program = Program;
       this.IsChecked = IsChecked;
   }

    public string Program { get; set; }
    public bool IsChecked { get; set; }
}

终于有了@Sheridan 提到的想法:

【问题讨论】:

  • 为什么要在组合框内设置一个复选框?!你会有多个盒子吗?您是否尝试将其设置为上述情况下的选定项?
  • 是的,我们在组合框中有多个复选框。例如,像 test,test1,test2 这样的程序需要在每个组合框中显示复选框。
  • 将复选框作为 ComboboxItem。
  • desired 在 wpf 中确实是可能的,但是您的绑定显示单个数据值而不是组合框的集合。共享绑定到数据网格的数据类,让我们看看如何实现所需。

标签: c# .net wpf wpf-controls wpfdatagrid


【解决方案1】:

您提供了一个DataTemplate 来定义您的列应该呈现一个ComboBox,所以我不确定为什么您不能扩展它并提供一个DataTemplate 来定义您的ComboBoxItems应该呈现为Checkboxes。试试这样的:

<toolkit:DataGridTemplateColumn Header="Template">
    <toolkit:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox>
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <CheckBox IsChecked="{Binding IsChecked}" Width="20" />
                            <TextBlock Text="{Binding Program}" Width="100" />
                        </StackPanel>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
        </DataTemplate>
    </toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>

我会让你完成这件事。

【讨论】:

  • 如果我使用此代码复选框并且未在组合框中添加文本块
  • 如果我使用此代码复选框并且未在 Combobox 中添加文本块...当然不是,ComboBox 上没有 ItemsSource Binding。我确实说过我会让你完成这件事
  • 我已经添加了你提到的Itemsource并更新了结果图像。
猜你喜欢
  • 2013-06-11
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 2018-10-19
  • 2017-04-24
  • 2023-03-14
相关资源
最近更新 更多