问题标签 [system.componentmodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
614 浏览

wpf - IEQuatable 的方式影响组合框的行为

在处理组合框时,我发现了一个有线问题。Xaml 看起来像这样

假设 Itemsource 与轴列表(对象)绑定,并且 selectedItem 是列表之一。

然后我尝试将此列表设为空(请参阅 Button_Click)。Combobox 正在调用 List 的每个对象的 .Equals 并比较最后一个 Selected 对象。虽然我的期望是它不应该调用 .equals 并将 SelectedItem 设置为 null。

现在,如果我在 Shaft 上实现 IEquatable 然后将 List 设置为 null 它工作正常。表示不会调用 .Eqauls & selectedItem 设置为 null。

新实施

这表明即使列表为空,组合框也不会释放绑定到 Itemsource 的对象。直到我们实现 IEquatable 。

知道为什么会这样吗?

0 投票
1 回答
573 浏览

c# - 在 lambda 表达式中在编译时检查属性名称

在我的上一个问题中,Linq 表达式和扩展方法获取属性名称我询问了两个 POCO 属性之间使用表达式和扩展的数据绑定。我有一个有用的分析器,它工作正常,但我有一个问题。

这是代码:

用法:

我对上述问题的问题是:

  • 当我调用 Bind 时,第二个参数是当前类的成员,所以我有类似 x.Bind(Name => Id); 而不是 x.Bind(Name => y.Id)。在这种情况下,绑定失败,因为destinationExpression.Expression 是ConstantExpression 而不是MemberExpression。我不确定在这种情况下我需要进行哪些更改才能使其正常工作。

  • 如果属性名称不正确,例如 x.Bind(Na123me => Id),有没有办法让它在编译时失败?

0 投票
1 回答
1930 浏览

.net - 自定义收藏编辑器最高级教程

我们需要了解有关如何自定义标准 .NET 集合编辑器的所有信息,我们该往哪里看?

0 投票
0 回答
342 浏览

.net - 如何继承 System.ComponentModel.GroupDescription?

谁能解释如何使用 .NET 库的GroupDescription类来实现除(类似)PropertyGroupDescription 类之外的任何东西?

换句话说:通过子类化 GroupDescription 可以进行哪些其他类型的分组?你能举一个具体的例子来说明如何实现 GroupDescription 的 GroupNameFromItem(...) 方法吗?

0 投票
2 回答
1971 浏览

c# - 如何为实用程序类中的属性设置器使用静态实用程序方法

我正在尝试在 DataGridView 和为 DGV 提供数据的 BindingList 之间实现双向绑定。有些列尚未反映基础列表中的更改,我认为这是因为我没有提供属性设置器来通知属性更改。我没有像为 Process 属性那样为 Rows 属性编写 setter 代码,而是试图变得更“优雅”,但我意识到我被困住了......

我偶然发现了一篇非常有趣的文章,提出了一种更优雅的方法,我正在尝试实现它的概念(请参阅): http ://www.gavaghan.org/blog/2007/07/17/use-inotifypropertychanged-与绑定列表/

这是我想使用的 Mike 文章中的代码(在我的 CBMI.Common 项目中建立为Utilities.cs ):

所以,我的第一个问题是:作者在他的文章中没有返回语句,我添加了它来解决编译器错误。我猜 eventHandler 执行并返回,这是作者的遗漏,这应该返回 true,因为该方法需要 bool 返回类型。这是正确的假设吗?

我的第二个问题显示了当我尝试使用上面的这个辅助方法时我是一个 C# 菜鸟。我已将此类编码到与上述相同的项目(和命名空间)中名为InputFileInfo.cs的单独文件中:

此类中第二个属性的设置器是我尝试使用 Mike 的静态方法的地方:

如果我删除 Utilities.Set 并将其编码如下:

..然后我得到编译器抱怨“当前上下文中不存在名称'Set'”

我尝试添加一个using Utilities;指令,但这并没有解决问题。

最后,我不明白参数:ref T oldValue,T newValue,也不是调用Set方法
的参数称为value 。

有人可以帮助我解决有关此代码的这些多重困惑,以便我可以使用这些更高级的想法吗?

---- 编辑更新---- 两个好的答案帮助我完成了这项工作。上面原始帖子中的“第二个问题”仍然有点难以捉摸。为每个请求关于如何打包它的“最佳实践”添加注释,以便我可以使用 Mike 原始文章中的简单调用语法。也就是说,我正在寻求仅通过方法名称来调用“帮助”静态方法。我想了解如何调用:

而不必编码为:

我通过编写 Utilities.Set 得到了这个工作,但我猜这个问题有点变形 - “我在哪里放置静态方法以及如何调用它们,所以我不必用类名“限定”它们?我想了解如何打包不需要对象实例的通常有用的“实用程序”类型方法。在这种情况下,静态方法称为 Set 但我希望能够添加其他静态方法,例如:

我有一个单独编译的 DLL(Vstudio 项目),只包含类文件。最终,我想我可以在其他应用程序中使用这个类。

声明这些静态方法的最佳位置在哪里,以便可以将它们调用为:

代替:

0 投票
1 回答
167 浏览

.net - 是否有相当于 ITypedList 的 Silverlight?

我有一组对象,每个对象都包含一组名称-值对。所有对象的名称都相同。我想将这些显示为数据网格中的列。

在 Winforms/WPF 中,我会使用ITypedList一些PropertyDescriptor实例来为运行时提供一些虚假属性。但是,这种类型在 Silverlight 中似乎不可用。

那么,是否有替代方案,或者这在 Silverlight 中不存在?

编辑添加一些代码以更好地构建场景

如何使行/单元格查找工作并填充DataGrid?具体来说,我希望网格在Rows属性更改后通过绑定进行更新(假设它引发了绑定响应的更改事件。)

0 投票
1 回答
1103 浏览

c# - 附加到 NotifyIcon 的 ContextMenu 中的单击事件延迟

我正在System.ComponentModel.Composition为应用程序开发一个插件(使用 ),以便在 Windows UI 的通知区域中放置一个图标。

现在,当我单击该图标的上下文菜单中的某个项目时,Click不会调用处理程序。
有趣的是,当我再次右键单击该图标(单击菜单项后)时,会调用Click先前单击的处理程序。MenuItem左键单击或悬停在图标上不会触发此步骤。

到底是怎么回事?

更新:我有一种强烈的感觉,我的问题与这个问题有关。但我仍在试图弄清楚如何将其应用于我的插件/应用程序。

0 投票
2 回答
3047 浏览

c#-4.0 - System.ComponentModel.BindingList:Add(object) 与 AddNew()

System.ComponentModel.BindingList方法Add(object)和有什么区别AddNew()?MSDN 文档是这样说的:

  • Add: 将对象添加到Collection<T>.

  • AddNew:将新项目添加到集合中。

似乎这两种方法都将一个项目添加到集合中,但是Add(object)一次完成,而AddNew()稍微复杂一些。我的测试Add(object)似乎有效,但我想知道我是否使用了正确的方法。

那么这些方法有什么区别呢?

0 投票
2 回答
301 浏览

sharepoint - 如何在 Silverlight 的 SharePoint 客户端对象模型中将字符串转换为颜色?

我需要将具有颜色名称(例如“Red”)的字符串转换为 System.Windows.Media.Color 的对象。

我正在使用以下代码:

代码成功构建,但引发运行时异常:“ConvertFrom 未在基本 TypeConverter 中实现。”

任何帮助是极大的赞赏。谢谢!

0 投票
1 回答
27 浏览

c# - 查看参数构造一次

我有以下代码作为ViewModel类的构造函数:

这个视图模型对应一个子窗口。当我运行一次子窗口时,关闭它并尝试再次运行它,我收到一个异常,告诉我我不能在关闭的窗口上Show调用。ShowDialog这是否意味着只IItemDefView创建了 1 个对象?我该怎么办?