- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了一个基本 View 模型来将我所有 View 模型的所有通用属性放入其中,并且它正在由我的 C# Silverlight 应用程序的所有 View 模型实现。
我的基本 View 模型还为所有 View 模型实现了 INotifyPropertyChanged
接口(interface)。
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
当我频繁调用 PropertyChanged
事件时,出现错误:
Error HRESULT E_FAIL has been returned from a call to a COM component.
堆栈跟踪是
at MS.Internal.XcpImports.CheckHResult(UInt32 hr) at MS.Internal.XcpImports.SetValue(IManagedPeerBase obj, DependencyProperty property, DependencyObject doh) at MS.Internal.XcpImports.SetValue(IManagedPeerBase doh, DependencyProperty property, Object obj) at System.Windows.DependencyObject.SetObjectValueToCore(DependencyProperty dp, Object value) at System.Windows.DependencyObject.SetEffectiveValue(DependencyProperty property, EffectiveValueEntry& newEntry, Object newValue) at System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation) at System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet, Boolean isBindingInStyleSetter) at System.Windows.Controls.Control.set_DefaultStyleKey(Object value) at System.Windows.Controls.ContentControl..ctor() at MS.Internal.CoreTypes.GetCoreWrapper(UInt32 typeId) at MS.Internal.ManagedPeerTable.EnsureManagedPeer(IntPtr unmanagedPointer, Int32 typeIndex, Type type, Boolean preserveManagedObjectReference) at MS.Internal.XcpImports.ConvertDO(IntPtr doPointer, Int32 typeIndex, Boolean releaseObjectReference) at MS.Internal.XcpImports.ConvertType(CValue outVal, Int32 typeIndex, Boolean releaseObjectReference, Boolean deleteBuffer, IManagedPeerBase fromObject) at MS.Internal.XcpImports.ConvertCValueForManagedWithType(Type propertyType, CValue& outVal, Int32 outDOType, Boolean releaseObjectReference, Boolean deleteBuffer, IManagedPeerBase fromObject) at MS.Internal.XcpImports.GetValue(IManagedPeerBase managedPeer, DependencyProperty property) at System.Windows.DependencyObject.GetValueInternal(DependencyProperty dp) at System.Windows.FrameworkElement.GetValueInternal(DependencyProperty dp) at System.Windows.FrameworkElement.get_Parent() at Telerik.Windows.RadRoutedEventHelper.FindParent(FrameworkElement item) at Telerik.Windows.RadRoutedEventHelper.BuildRoute(DependencyObject element, EventRoute route, RadRoutedEventArgs args) at Telerik.Windows.RadRoutedEventHelper.RaiseEvent(DependencyObject element, RadRoutedEventArgs args) at Telerik.Windows.DependencyObjectExtensions.RaiseEvent(DependencyObject element, RadRoutedEventArgs e) at Telerik.Windows.Controls.Selector.OnSelectionChanged(SelectionChangedEventArgs e) at Telerik.Windows.Controls.RadComboBox.OnSelectionChanged(SelectionChangedEventArgs e) at Telerik.Windows.Controls.Selector.OnSelectionChanged(Object sender, SelectionChangedEventArgs e) at Telerik.Windows.Controls.Selector.SelectionChanger`1.InvokeSelectionChangedEvent() at Telerik.Windows.Controls.Selector.SelectionChanger`1.End() at Telerik.Windows.Controls.Selector.SelectionChanger`1.SelectJustThisItem(T item) at Telerik.Windows.Controls.Selector.SelectItemWithValue(Object value) at Telerik.Windows.Controls.Selector.CoerceSelectedValue(Object value) at Telerik.Windows.Controls.Selector.OnCoerceSelectedValue(DependencyObject sender, Object newValue) at Telerik.Windows.PropertyMetadata.DoCoercion(Func`3 areValuesEqual, DependencyObject d, DependencyProperty dp, CoerceValueCallback coerceCallback, Object defaultBaseValue, Boolean forceNewBaseValue, Boolean& isReentrantImplicitCoercion) at Telerik.Windows.PropertyMetadata.PropertyChangeHook.OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) at System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue) at System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation) at System.Windows.DependencyObject.RefreshExpression(DependencyProperty dp) at System.Windows.Data.BindingExpression.SendDataToTarget() at System.Windows.Data.BindingExpression.SourceAcquired() at System.Windows.Data.Debugging.BindingBreakPoint.<>c__DisplayClass4.<BreakOnSharedType>b__3()
最佳答案
没有发现您的 INotifyPropertyChanged 实现有任何问题,但是我怀疑您的代码以某种方式导致了无限循环。
如果您可以共享一个可以重现您遇到的问题的示例项目,人们可能会帮助您。
关于c# - INotifyPropertyChanged 在 silverlight c# 中频繁调用时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552794/
我在我的 LINQ-to-SQL 类中修改了我的数据源(通过旧的删除和拖回方法),并且惊讶地看到 INotifyPropertyChanging 和 INotifyPropertyChanged 接口
我喜欢对需要 INotifyPropertyChanged 接口(interface)的完整属性进行一些较少重复和浪费的编码,并进行自定义属性。 背景 今天,为了在窗口中使用具有动态更新值的 MVVM
INotifyPropertyChanged 的目的是什么。我知道每当更改属性时都会触发此事件,但是 View /用户界面如何知道触发了此事件: 这是实现 INotifyPropertyChang
我已经设置了一个属性并实现了 INotifyPropertyChanged 像这样... public event PropertyChangedEventHandler PropertyChange
我有一个类(我们称它为 MyContainerClass ),它是其他几个类的容器(我们称它们为 ClassA 到 ClassF )。 ClassA至ClassF继承相同的基类(我们称之为 MyBas
鉴于: public class MyClass : INotifyPropertyChanged { public List _TestFire = new List(); stri
首先,我想说下面的示例过于简单化。 假设您已绑定(bind) WPF 控件。 Window 绑定(bind)到实现 INotifyPro
我想将窗口中的 TextBox 绑定(bind)到作为 View 模型变量的类中包含的属性,并确保 INotifyPropertyChanged 的 PropertyChanged 事件从类传播到
所有使用 MVVM 的 Silverlight 示例都使用名为 IPropertyChanged 的接口(interface)。它背后的概念是什么,为什么我们需要在设置一些值时引发事件? 例如:-
我正在阅读最新的Prism 4发行版的源代码,并且对解决此问题感兴趣。 ViewModels有一个基类,它实现INotifyPropertyChanged和INotifyDataErrorInfo并提
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
我的应用程序中有 2 个 ViewModel。第一个(FirstPageViewModel)负责在我的 View 中的文本框中显示的数据。另一个 ViewModel (NavigationViewMo
这是我目前实现INotifyPropertyChanged的方式- public class ViewModel : INotifyPropertyChanged { public Perso
我的问题似乎是“范围”,尽管我不确定这是正确的术语。我想在设置自定义对象中的属性时通知只读列表重新评估自身。我相信它根本不知道它的存在。也许有一个简单的方法可以解决这个问题,我想不出,但我正在画一个空
在 WPF 中,我们(至少)有两个线程:渲染线程和 UI 线程。当我针对某些属性更改引发事件 OnNotifyPropertyChanged 时,它会在 UI 线程上引发。需要将此信息分派(dispa
下面的代码基于此 post : 我的问题:在这个简单的示例中,我看不出我做错了什么来让 INotifyPropertyChanged 导致 textBox1 绑定(bind)自动反射(reflect)
INotifyPropertyChanged 在 View 模型中对于数据绑定(bind)到 View 显然非常有用。当我想要通知属性更改时,我是否也应该在我的应用程序的其他部分(例如业务层)中使用此
假设我有一个订单行对象集合... public class OrderLine { public decimal Qty { get; set; } public decimal Co
我在此链接中看到以下代码:An elegant way to implement INotifyPropertyChanged 我是表达式树的新手。谁能解释一下这段代码是如何简单工作的? 谢谢 pri
我在给定 Type 的字段和属性上循环,我想测试字段类型或属性 Type 是否实现了 INotifyPropertyChanged。 也许这听起来很奇怪,但我会解析字段/属性,例如字符串、整数和其他类
我是一名优秀的程序员,十分优秀!