Infragistics WPF 15.2是你的释放!这是正确的…… 你的释放。作为Infragistics的产品经理,我的工作是给你,我们的客户,一个声音。我倾听你的反馈,无论是正面的还是负面的,并确保我们的产品反映了这些对话。多年来,Infragistics一直致力于与您建立一个诚实透明的沟通社区。花了一些时间,但你终于发现了你的声音。你被你的声音赋予了力量。现在,你用你的声音直接影响了你使用的产品。我们与我们的Infragistics WPF 15.2版本提供的每一个功能都是由您直接请求和/或影响的。我们没有任何单一的公司战略、议程或市场影响力。这个版本是所有关于你,我们的客户。
问,你会收到!让我们来看看您要求的所有控件和功能,以及我们在15.2版本中提供的功能。
xamBusyIndicator
回到2010年,我启动了一个名为Extended WPF Toolkit的OSS项目。你可能听说过。它的第一个控件是一个繁忙的指示器控件。多年来,我在工具包中添加了更多控件,但是busy指示器始终是工具包中最受欢迎的控件之一,并且有充分的理由。我写过的每一个WPF应用程序都需要一个繁忙的指标控件,我相信你也有过类似的经历。令人惊讶的是,这是一个长期以来在Infragistics WPF产品中缺少的控件。不再是了。感谢您,我们现在拥有市场上最好的繁忙指标控制。期。
对于那些可能不熟悉繁忙指标控件的人来说,它是一个使开发人员可以轻松向其最终用户报告长时间运行的多线程进程的进度的控件。它在视图区域的顶部显示一个对话框,其中将播放动画,以向最终用户提供有关操作进度的视觉反馈,同时使用略微透明的覆盖层锁定基础视图元素。
显示xamBusyIndicator就像在长时间运行的进程即将启动时将IsBusy属性设置为true一样简单。若要关闭它,请在操作完成后将IsBusy属性重新设置为false。
xamBusyIndicator支持确定状态和不确定状态。对于不确定状态,将IsIndeterminate属性设置为true,将播放连续的动画,直到操作完成为止。这对于完成操作的时间未知的情况是常见的。对于确定状态,开发人员可以更新ProgressValue属性,以便递增动画值,从而为最终用户提供操作完成的确切百分比的视觉反馈。
xamBusyIndicator附带了八个内置动画 (下面显示了七个),可以使用动画属性进行更改。开发人员还可以通过DataTemplate提供自己的动画。请记住,某些动画仅支持不确定模式,而不考虑IsIndeterminate属性的值。
与大多数繁忙指示器控件一样,xamBusyIndicator还支持使用自定义BusyContent ,并支持使用displayaf后属性延迟指示器的出现。另一个很酷的功能是能够使用FocusAfter属性将焦点设置到视图中的任何控件,因此当xamBusyIndicator关闭时,可以在像文本框这样的元素上设置焦点,以获得更好的最终用户体验。
我们为xamBusyIndicator添加的另一个非常酷的东西实际上是WPF示例浏览器。我们添加了一个很酷的配置器,以便您可以自定义xamBusyIndicator,然后导出样式以在您的应用程序中使用。这样,您就不必编写任何代码。只需像您想要的那样获取xamBusyIndicator,将样式导出到剪贴板,然后粘贴到您的应用程序中。就这么简单!
xamDataGrid
在15.2之前,xamDataGrid仅在网格使用LabelIcons的FilterUIType时提供Excel样式多选筛选选项。正如你可以想象的那样,Excel风格过滤是一种非常流行的过滤风格,我们知道你对FilterRecord选项不可用的这个fitering选项有多恼火。所以我们修好了!现在,您可以在使用FilterRecord作为FilterUIType时,通过将FilterOperandUIType设置为ExcelStyle ,为最终用户提供这种熟悉的Excel样式筛选。
如果你是一个MVVM开发人员,如果你正在做WPF你最好,那么你很清楚INotifyDataErrorInfo接口。现在,INotifyDataErrorInfo接口与WPF早期版本中提供的IDataErrorInfo不同。INotifyDataErrorInfo与一起发布。NET 4.5,并且是用于同步和异步报告错误信息的新的推荐接口。您现在可能已经猜到了,xamDataGrid完全支持INotifyDataErrorInfo接口。
沿着同样的路线,如果你正在做MVVM,那么你知道所有关于INotifyPropertyChanged接口。但是,如果你的对象不实现INPC会发生什么?可以做什么?嗯,您可以遵循许多设计模式来添加对INPC的支持。或者,您可以只使用我们添加到xamDataGrids记录中的名为RefreshCellValue和RefreshCellValues的两个新方法中的一个。这些新方法允许您手动刷新已显示给用户的数据,而无需INotifyPropertyChanged接口。
当我们宣布为xamDataGrid发布新的TemplateField时,我们收到了大量的反馈和好评。我们也有一个共同的要求。从15.2版本开始,您现在可以使用DataTempateSelector来利用业务逻辑来确定将哪个模板应用于EditTemplate和DisplayTemplate。只需创建一个DataTemplateSelector类,添加逻辑,然后设置EditTemplateSelector和/或DisplayTemplateSelector属性即可。
我们为15.2添加到xamDataGrid的最后一个功能是一个名为DataSourceChanged的方便的新事件。这将允许您在xamDataGrid的数据源更改时随时响应。
xamPropertyGrid
对于希望对xamPropertyGrid中的属性和类别的排序进行更多控制的客户,请不要再等待。我们向xamPropertyGrid引入了许多新特性和属性,使您可以完全控制属性和类别的排序方式。对于属性排序,只需使用propertysorderattribute修饰类中的每个属性 ,并提供一个整数来指定所需的属性顺序。例如; 用以下特性修饰属性会将该属性排序到XamPropertyGrid显示中的第5个位置:
[PropertySortOrder(5)]
为了设置类别的排序顺序,您只需要用CategorySortOrderAttribute修饰类 ,并提供要排序的类别的名称,以及一个整数来表示将在xamPropertyGrid中显示的类别的所需顺序。可以在一个类上声明多个CategorySortOrderAttributes,以表示已定义的每个类别。例如,类的以下属性将为类中的属性使用的3个类别分配排序顺序,这些类别将按 “触摸”,“行为” 和 “外观” 的顺序显示在xamPropertyGrid中:
[CategorySortOrder(“外观”,5)]
[CategorySortOrder(“行为”,4)]
[CategorySortOrder(“触摸”,1)]
但是Brian… 如果我的业务对象库不能引用Infragistics WPF程序集怎么办?伟大的问题!如果包含要在XamPropertyGrid中显示的属性的类包含在对XamPropertyGrid没有引用或不能引用的程序集中,因此无法访问上述两个自定义特性,我们支持另一种方法,您可以使用您在自己的程序集中定义的自定义属性来装饰您的类/属性。XamPropertyGrid将识别这些开发人员定义的自定义排序属性,只要它们符合以下2条规则:
开发人员定义的属性名称必须为:
- CategorySortOrder (或CategorySortOrderAttribute)
- PropertySortOrder (或PropertySortOrderAttribute)
并且每个都必须采用以下类型的参数:
- CategorySortOrder必须采用2个参数: 一个类型字符串的类别名称和一个类型int的排序顺序
- PropertySortOrder必须采用1个参数类型int的排序顺序
但布赖恩… 我的对象是封闭的修改,或者我没有访问直接修改类。所以我甚至不能使用我自己的自定义属性,即使我想。现在怎么办?没问题!如果你不能,或不喜欢,采取声明性的方法和装饰类型/属性的属性,我们提供了一个编程的方式来控制排序顺序。为此,我们在IComparer类型的XamPropertyGrid上公开两个可设置属性:
- 公共IComparerCategorySortComparer
- 公共IComparer PropertySortComparer
客户要求的另一个功能是支持System.ComponentModel. MergablePropertyAttribute的功能,当属性存在于作为xamPropertyGrid中多个选择的一部分的对象实例上时,可以控制如何编辑这些属性。当使用MergableProperty修饰属性时,已修饰的属性将在xamPropertyGrid中隐藏,并且不可用于编辑。
最后,添加了对System.ComponentModel. ICustomTypeDescriptor接口的支持,通过提供动态自定义类型信息,使您能够更好地控制如何在xamPropertyGrid中显示属性。
xamComboEditor
xamComboEditor现在支持System.ComponentModel. DescriptionAttribute ,因此在将xamComboEditor绑定到作为枚举的项源时,无论是作为独立编辑器还是作为xamDataGrid中的编辑器,它都将显示通过属性声明的说明,而不是实际的枚举值。这是那些小的,但非常有帮助和急需的功能之一。
传说
我们通过公开许多新属性对图例、ItemLegend和ScaleLegend的API进行了改进,以便您可以更轻松地更改图例中显示的项目的外观。
- TitleForeground
- TitleFontSize
- TitleFontFamily
- TitleFontStyle
- TitleFontWeight
- TitleFontStretch
- 项目前景
- ItemsFontSize
- ItemsFontFamily
- ItemsFontStyle
- ItemsFontWeight
- ItemsFontStretch
此外,在图例中定位/对齐标题和项目还有四个新属性:
- TitleHorizontalAlignment
- TitleVerticalAlignment
- ItemsHorizontalAlignment (不适用于ScaleLegend)
- ItemsVerticalAlignment (不适用于ScaleLegend)
注意: 这些新属性不会影响xamDataChart的旧主题,因为legend控件的基类在此主题中使用不同的属性。
xamDataChart
xamDataChart中添加了新的属性,使开发人员可以更轻松地设置主要和次要网格线间隔。这消除了您创建自定义代码以在每次最终用户缩放、滚动或向图表添加新数据时重新计算间隔值的需要。
xamSpreadsheet
xamSpreadsheet现在支持数据验证。您现在可以验证单元格值,提供工具提示,并显示基于无效值的错误消息。
Excel引擎
我们流行的Excel引擎,为我们的xamSpreadsheet控件提供动力的引擎,在其API中添加了四个新方法。这些方法使从WorksheetTable类插入和删除行和列变得更加容易。
- DeleteColumns(int tableColumnIndex, int count = 1)
- DeleteDataRows(int dataRowIndex, int coun = 1)
- InsertColumns(int tableColumnIndex, int count = 1)
- InsertDataRows(int dataRowIndex, int coun = 1)
xamRichTextEditor
xamRichTextEditor收到了一个名为GetPositionFromPoint的新方法,该方法使客户能够获取相对于提供的点最近的有效文本插入位置。方法名称和参数与WPF RichTextBox使用的名称/参数匹配,以便客户可以轻松发现此新方法并熟悉其工作方式。
让我们把这个孩子包起来!
除了新的xamBusyIndicator控件,以及我在这篇文章中提到的所有新功能之外,我们还提供了更多我没有机会谈论的内容。我们有很多其他较小的功能,错误修复和性能优化,这是我们最新的15.2版本的一部分。
我希望你和我一样对这个版本感到兴奋。正如您可能已经注意到的那样,Infragistics的情况正在发生变化,您的声音比以往任何时候都要响亮。如果您对我们应该为我们的控件带来的新功能有想法,我们需要解决的重要问题,甚至是您希望我们介绍的全新控件,请在我们的产品创意网站上发布它们,让我们知道。通过 @ infragistics在Twitter上关注并与我们互动。您也可以直接在Twitter上 @ brianlagunas关注并与我联系。还要确保通过我们的社区论坛与我们的各个团队联系,在那里您可以与Infragistics工程师和其他客户进行互动。
如果您还没有使用我们的WPF控件,请记住免费评估下载只需单击即可
最后,当您确实使用我们的控件构建了一些很酷的东西时,请确保让我们知道。</p