我没有在参考资料中声明转换器,而是可以做类似的事情
IsEnabled={Binding Path=SomeProp, Converter={x:Static namespace:Converter.Instance}}"
Run Code Online (Sandbox Code Playgroud)
Instance只被实例化一次(lazy sinlgeton)
但是我担心在处理视图时(我使用PRISM),保持对静态变量的引用可能会妨碍垃圾收集.你怎么看?
为什么事件处理程序永远不会被调用,如果它被添加到一个不可数的循环中?
例如:
IEnumerable<MyType> list = someCollection.Select(i => new MyType(i));
foreach (var item in list)
item.PropertyChanged += item_PropertyChanged; <-- this never gets called
Run Code Online (Sandbox Code Playgroud)
Bu如果分配列表就像
list = someCollection.Select(i => new MyType(i)).ToArray();
Run Code Online (Sandbox Code Playgroud)
事件处理程序确实被调用..
为什么?(我想它与LINQ查询是懒惰的事实有关,但循环结果的事实是不够的?)