Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 网格状控件,用于.net的单元级自定义_Wpf_Winforms_Grid - Fatal编程技术网

Wpf 网格状控件,用于.net的单元级自定义

Wpf 网格状控件,用于.net的单元级自定义,wpf,winforms,grid,Wpf,Winforms,Grid,我正在寻找一个类似网格的控件,可以是WinForm,也可以是WPF。 我有一个名为PropertyInfo的类数组集合。此类将PropertyValue和PropertyType作为属性公开PropertyValue可以是任意对象。这个数组集合需要显示在网格布局中,我需要控制每个单元格。例如,基于属性类型,单元格可以是组合框、复选框或超链接单元格,甚至可以是只读单元格。因此,我需要通过迭代每个项中的集合和数组值,在代码隐藏中创建单元格。 其他要求包括: 应该是免费的或标准的.net控件 应在.n

我正在寻找一个类似网格的控件,可以是WinForm,也可以是WPF。 我有一个名为
PropertyInfo
的类数组集合。此类将
PropertyValue
PropertyType
作为属性公开
PropertyValue
可以是任意对象。这个数组集合需要显示在网格布局中,我需要控制每个单元格。例如,基于
属性类型
,单元格可以是组合框、复选框或超链接单元格,甚至可以是只读单元格。因此,我需要通过迭代每个项中的集合和数组值,在代码隐藏中创建单元格。 其他要求包括:

  • 应该是免费的或标准的.net控件
  • 应在.net 3.5中支持
  • 应支持在单元格中托管自定义控件以编辑单元格值。 例如:用于编辑颜色的颜色选择器
  • 应通知值更改以执行额外的验证,如max 文本长度或数字范围
  • 应允许检索已修改的单元格值
  • 如果单元格属性如边框、前景和 可以定义背景色

  • 在我的搜索中,我遇到了WinFormDataGridView。如果数据位于DataSet中,并且列类型为DataGridViewComboBoxColumn时combobox可用,则此控件更合适。不确定combobox是否可以通过代码随机放置在任何单元格中。另一个名为Sourcegrid的控件处于启用状态。不确定是否能完全满足上述所有要求。请提供建议。提前感谢。

    您看过扩展WPF工具包的吗?
    ,因此我需要通过迭代每个项目中的集合和数组值在代码隐藏中创建单元格。
    -不,您没有。这不是你在WPF里做事的方式。在WPF中,您为每个特定的
    数据类型创建一个适当的
    数据模板
    ,并让UI“绘制”和管理自己。与winforms不同,WPF不是无用的恐龙,不需要一堆可怕的黑客来完成任何事情。它也不需要来自
    System.Data
    的任何内容,并且可以将任何UI元素的任何属性绑定到任何数据对象或任何其他UI元素。简而言之,它的所有功能都要强大得多。您在这里描述的内容可以通过
    ItemsControl
    的大约15行XAML和两个
    DataTemplates
    来实现。感谢您的评论。在wpf的情况下,假设一个属性值是抽象类型的集合。派生类型有自己的特定属性,这些属性在抽象基础级别上没有定义。我需要首先知道类型,然后需要决定要呈现哪个属性。在这里,我对要呈现的类型没有任何控制,比如实现INotifyPropertyChanged。因此,这些类型及其集合不是WPF绑定友好的。我知道用代码隐藏的方式编写代码是很难看的,但这似乎是唯一的方法。