问题标签 [freezable]
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.
wpf - Freezable.Clone() 和 Freezable.CloneCurrentValue() 方法有什么区别
文件说
克隆- “创建 System.Windows.Freezable 的可修改克隆,制作对象值的深层副本。复制对象的依赖属性时,此方法复制表达式(可能不再解析)但不复制动画或其当前值。”
CloneCurrentValue - “使用其当前值创建 System.Windows.Freezable 的可修改克隆(深层副本)。”
这意味着两者都做深拷贝。那么有什么区别呢?
.net - WPF Freezable 错误的解决方法?
我最近遇到了一个非常糟糕的 WPF 错误。我认为这与Microsoft Connect 上的这个错误相同。
我们的应用程序使用 Visual Studio 2010 以 .NET 4.0 客户端配置文件为目标。
基本上,当 ViewModel 触发对导致项目在 ItemsControl 中移动的任何属性或集合的更改时,有可能会引发以下异常。它并不总是发生,而且似乎是基于不同时间的不同触发器而发生的。似乎更有可能在启动应用程序后不久。如果您可以使用它几分钟而不会遇到异常,那么您可能永远不会在该应用程序实例期间遇到异常。
{DynamicResource key}
就像Connect错误报告一样,我正在使用SolidColorBrush
从ResourceDictionary
. 一些字典是手动加载的(用于主题支持)。我尝试手动冻结这些词典中的所有内容,但似乎没有帮助。
最近,当我在主窗口中添加了几个UserControl
s 并将其中的 ItemsControls 绑定到ObservableCollection
s 时,异常变得更加频繁。以前,我只会在 50 次中看到异常 1 次,但现在我在使用该程序的 5 次中看到了 4 次。
有没有人对解决方法有任何想法?Connect 错误表明这可能会在下一个 .NET 版本(无论何时)中得到修复,但这个错误使我们的应用程序现在基本上无法使用。
编辑:我们还尝试简单地抑制InvalidOperationException
在 ViewModel 基类的 PropertyChanged 事件中抛出的任何 s 。这似乎在一定程度上减少了异常的数量,但现在我们只是在ObservableCollection
'CollectionChanged
事件中击中它们。
wpf - 如何创建自己的 Freezable 类?
我已经尝试过 MSDN,但没有从 Freezable 派生的示例。
更新:
是的,在 MSDN 中有一个动画示例,但它太复杂了。需要一些更简单的东西来理解可冻结的。
wpf - WPF冻结的BitmapImage不显示
我正在使用绑定到 UI 上的图像属性的视图模型,并且视图模型包含 ImageSource 属性。我使用以下函数设置该属性
出于某种奇怪的原因,在以下代码中,当我在 BitmapImage 上调用 Freeze 时,它不会出现在主窗口中。我没有遇到异常或崩溃。有人可以帮我吗?我正在异步设置图像属性,因此我需要能够使用创建的图像,假设 GetImageFromUri 调用是从 UI 线程以外的线程进行的。
c# - 使用情节提要引发自定义命令。错误:情节提要不可冻结
我有一个故事板抱怨无法冻结的问题。谷歌上有很多关于这个的链接,但是我不确定从阅读这些信息中我如何能够实现我想要的。(即几乎只是从 IsMouseOver 属性更改执行自定义命令)。我正在使用数据模板来更改我的列表视图,使其看起来像我在以下信息中提供的链接:
我的资源字典:
我的用户界面看起来像:
我的转换器看起来像:
我的 GestureState 枚举看起来像:
我的手势控制器/命令如下所示:
我的视图模型看起来像:
我得到的例外是:
InvalidOperation:无法冻结情节提要。
我的用户界面看起来像这样:
目前的理解:
我从阅读中了解到,情节提要需要可冻结,以便跨未冻结的线程快速访问。
我的问题是如何以可冻结的方式进行绑定或使用替代方法实现我想要的。我的核心问题是我想在捕获手势时将鼠标悬停在列表项上时引发自定义命令或事件。
c# - 不能使用属于与其父 Freezable 不同的线程的 DependencyObject
我有一个 wpf 表单,一旦用户从控件中做出选择,我想从中显示一个加载弹出窗口,因为由于数据库不是本地的,数据的加载可能需要很长时间。我让一切正常工作,直到我为弹出窗口创建线程。
这是我创建线程的地方:
和线程方法:
现在执行的那一刻我得到这个错误:
不能使用属于与其父 Freezable 不同的线程的 DependencyObject。
任何帮助,将不胜感激 :)
c# - 我想做的是 FreezableCollection.AddRange(collectionToAdd)
我想做的是FreezableCollection.AddRange(collectionToAdd)
每次我添加到 FreezableCollection 时,都会引发一个事件并发生一些事情。现在我有一个想要添加的新集合,但这次我希望 FreezableCollection 的CollectionChanged 事件只触发一次。
循环并添加它们将为每个新项目引发事件。
有没有一种方法可以将所有目标都添加到 FreezableCollection,类似于 List.AddRange?
c# - 在附加属性中绑定到 FrameworkElement 的属性
我现在已经如何解决我的问题,但我需要解释为什么它会这样工作。我创建了一个设置控件Text
属性的测试附加属性。TextBlock
由于我需要在附加属性中包含更多参数,因此我使该属性接受通用属性 ( IGeneralAttProp
),因此我可以像这样使用它:
以下是Setter
附加属性和IGeneralAttProp
接口的实现:
和AttPropertyImpl
类的实现:
AttPropertyImpl
如果继承自 ,一切正常Freezable
。如果它只是一个DependencyObject
比它无法与消息绑定:
找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。绑定表达式:路径=TextToDisplay;数据项=空;目标元素是“AttPropertyImpl”(HashCode=15874253);目标属性是“TTD”(类型“字符串”)
当它是 a 时FrameworkElement
,绑定没有错误,但是该值未绑定。
问题是:为什么AttPropertyImpl
必须继承 fromFreezable
才能正常工作。
c# - 如何冻结 WPF DataGrid 的第一列
我有一个 WPF 数据网格..
我想在水平滚动时冻结该 WPF DataGrid 的第一列..
我的代码是:
wpf - 第二次执行时 LinqPad WPF 窗口 InvalidOperationException
我尝试在 LinaPad 上打开一个包含我的 WPF 用户控件的 WPF 窗口。
此代码仅适用于打开查询选项卡后的第一次执行。如果我再次执行代码,那么它会抛出 InvalidOperationException 说
LinqPad中第一次执行环境和后期执行环境有什么区别吗?