- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑引用Josh Smith' article WPF Apps With The Model-View-ViewModel Design Pattern ,特别是 RelayCommand
的示例实现(如图 3 所示)。 (这个问题不需要通读整篇文章。)
总的来说,我认为实现非常出色,但我对 CanExecuteChanged
订阅委托(delegate)给 CommandManager
的 RequerySuggested
有疑问> 事件。 documentation for RequerySuggested
状态:
Since this event is static, it will only hold onto the handler as a weak reference. Objects that listen for this event should keep a strong reference to their event handler to avoid it being garbage collected. This can be accomplished by having a private field and assigning the handler as the value before or after attaching to this event.
然而,RelayCommand
的示例实现并未为订阅的处理程序维护任何此类内容:
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
RelayCommand
的客户端,从而要求 RelayCommand
的用户了解 CanExecuteChanged
的实现并自己维护实时引用?如果是这样,是否有意义,例如,将 RelayCommand
的实现修改为如下所示,以减轻 CanExecuteChanged
潜在的过早 GC > 订阅者:
// This event never actually fires. It's purely lifetime mgm't.
private event EventHandler canExecChangedRef;
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
this.canExecChangedRef += value;
}
remove
{
this.canExecChangedRef -= value;
CommandManager.RequerySuggested -= value;
}
}
最佳答案
我在 Josh 的 comment 中找到了答案关于他的“Understanding Routed Commands”文章:
[...] you have to use the WeakEvent pattern in your CanExecuteChanged event. This is because visual elements will hook that event, and since the command object might never be garbage collected until the app shuts down, there is a very real potential for a memory leak. [...]
争论似乎是,CanExecuteChanged
实现者只能弱地保留已注册的处理程序,因为 WPF Visuals
愚蠢到无法自行解开。通过委托(delegate)给 CommandManager 可以最轻松地实现这一点,而 CommandManager 已经执行了此操作。大概出于同样的原因。
关于wpf - 约什·史密斯 (Josh Smith) 的 RelayCommand 实现是否存在缺陷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2281566/
我正在考虑一种在 Java 中查找成员 ID 的方法。但我首先需要知道是否可以将这些 ID 存储在组中。 问题是我想要成员 ID = FirstName, LastName; 如何将这些存储在一起?
我想将街道地址转换为类似 Title Case 的格式。它不完全是标题大小写,因为一串数字末尾的字母应该是大写的。例如 19A 史密斯街。 我知道我可以使用 将“19 smith STREET”更改为
涵盖了验证部分。 只是想将电子邮件解析成它们的组件。 假设电子邮件有效... 我能否只向后查找第一个“@”以及之后的所有内容? 然后向后查找一个空格,后面的所有内容都是电子邮件地址减去引用的名称? 最
我正在使用 C# (asp .net),并且我有一个文本框,它接受在数据库上执行查询的名称条目。 我想使用 IN 子句获取所有可能的值,但在我的 C# 页面中我得到 1 个字符串 例如 'john s
我正在使用Josh Smith THE MODEL-VIEW-VIEWMODEL (MVVM) DESIGN PATTER FOR WPF创建项目 但是有一个问题。相同的工作空间显示相同的操作。我的V
我的程序有问题。 这是链接:http://dl.dropbox.com/u/2734432/TabbedInterface.7z 打开这两个选项卡后,您将开始丢失对 View 中当前项目的其他集合的引
我将 Smith-Waterman 算法用于一本书的家庭作业,制作了一个值表。一旦我了解了如何获取值,构建表格就很容易了,但现在我很难从表格中确定最佳比对序列。 表格示例是按照公式生成的 min(
我正在使用 Smith-Waterman 算法运行一些字符串匹配测试。我目前正在使用 SimMetrics(Java 开源项目)来运行测试。 谁能解释为什么我比较“Bloggs J”。到“Bloggs
我正在尝试使用 Smith–Waterman algorithm 在 Python 中实现局部序列比对. 这是我目前所拥有的。它就构建了 similarity matrix : import sys,
在 MainWindow 中我们有: 在资源中: 在文章中说: A typed DataTemplate does not have an x:Key value assig
我正在尝试使用仿射间隙罚函数实现用于局部序列比对的 Smith-Waterman 算法。我想我了解如何启动和计算计算比对分数所需的矩阵,但对于如何回溯以找到比对一无所知。要生成所需的 3 个矩阵,我有
我正在尝试以类似@[123456](John Smith) 的模式捕获 ID 和名称,并使用它们创建类似 John Smith 的字符串。 这是我尝试过的方法,但它不起作用。 def format(t
我正在尝试设置 code::blocks smith 来进行 wxWidgets GUI 编程。最近我在我的电脑上安装了 code::blocks 和 wxWidget 库。 code::blocks
我需要 smith-waterman 在 php 中,你知道是否已经有一个实现吗? 我需要这个算法来进行邻近搜索 ( Function that returns affinity between te
我找到了这个 perl 脚本,但是我有太多的序列需要分析。我想知道是否可以优化它?我在上面启动了 NYTProf,发现“计算匹配分数”、“计算差距分数”和“选择最佳分数”部分花费了大量时间。我必须修改
我在 Smith Set 上阅读过维基百科, Schwartz Set , Kosaraju's Algorithm , Tarjan's Algorithm , 和 path-based stron
我需要有关如何在 CUDA 中优化 Smith-Waterman 算法实现的建议。 我要优化的部分是填充矩阵。由于矩阵元素之间的数据依赖性(每个下一个元素都依赖于其他元素 - 左到它,到它,再到它),
我正在开发一个小型应用程序,并考虑将 BLAST 或其他本地比对搜索集成到我的应用程序中。我的搜索只调出程序,需要作为外部程序安装和调用。 从头开始实现它还有什么办法吗?可能有任何预制库吗? 最佳答案
我正在寻找一种将字符串的首字母大写的方法,包括名称由连字符连接的地方,例如 adam smith-jones 需要是 Adam Smith-Jones。 ucwords()(或 ucfirst(),如
有人可以解释为什么这两个 smith chart plot function for exactly same circle of plotly 和 scikit-rf 如此不同吗?我怎样才能像 sc
我是一名优秀的程序员,十分优秀!