Tag: inotifypropertychanged

WPF INotifyPropertyChanged用于链接的只读属性

我试图了解如何更新UI如果我有一个依赖于另一个属性的只读属性,以便更改一个属性更新两个UI元素(在这种情况下是文本框和只读文本框。例如: public class raz : INotifyPropertyChanged { int _foo; public int foo { get { return _foo; } set { _foo = value; onPropertyChanged(this, “foo”); } } public int bar { get { return foo*foo; } } public raz() { } public event PropertyChangedEventHandler PropertyChanged; private void onPropertyChanged(object sender, string propertyName) { if(this.PropertyChanged != null) […]

如何从 INotifyPropertyChanged实现者中排除不可序列化的观察者?

我有近百个实体类看起来像这样: [Serializable] public class SampleEntity : INotifyPropertyChanged { private string name; public string Name { get { return this.name; } set { this.name = value; FirePropertyChanged(“Name”); } } [field:NonSerialized] public event PropertyChangedEventHandler PropertyChanged; private void FirePropertyChanged(string propertyName) { if (this.PropertyChanged != null) this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } 注意PropertyChanged上的[field:NonSerialized]属性。 这是必要的,因为一些观察者(在我的情况下 – 显示版本实体的网格)可能不是可序列化的,并且实体必须是可序列化的,因为它是通过远程处理由分离器机器上运行的应用程序提供的。 。 此解决方案适用于琐碎的案例。 但是,某些观察者可能是[Serializable] ,并且需要保留。 […]

列出 INotifyPropertyChanged事件

我有一个带有字符串属性和List属性的简单类,我实现了INofityPropertyChanged事件,但当我对字符串List执行.Add时,此事件未被命中,因此我的ListView中显示的Converter未被命中。 我猜测属性已更改未被添加到列表中….如何实现此方法以获取该属性更改事件命中??? 我需要使用其他类型的collections吗?! 谢谢你的帮助! namespace SVNQuickOpen.Configuration { public class DatabaseRecord : INotifyPropertyChanged { public DatabaseRecord() { IncludeFolders = new List(); } #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; protected void Notify(string propName) { if (this.PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propName)); } } #endregion private string _name; public string Name { get { return _name; […]

调用INotifyPropertyChanged的PropertyChanged事件的最佳方法是什么?

实现INotifyPropertyChanged接口时,每次在类中更新属性时,您都要负责调用PropertyChanged事件。 这通常会导致以下代码: public class MyClass: INotifyPropertyChanged private bool myfield; public bool MyField { get { return myfield; } set { if (myfield == value) return; myfield = value; OnPropertyChanged(new PropertyChangedEventArgs(“MyField”)); } } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(PropertyChangedEventArgs e) { PropertyChangedEventHandler h = PropertyChanged; if (h != null) h(this, e); } } 这是每个属性12行 。 […]

.NET WinForms INotifyPropertyChanged在更改一个绑定时更新所有绑定。 更好的方法?

在Windows窗体应用程序中,触发INotifyPropertyChanged的属性更改将导致窗体从绑定对象读取每个属性,而不仅仅是属性已更改。 (参见下面的示例代码) 这似乎是荒谬的浪费,因为界面需要更改属性的名称。 它在我的应用程序中导致大量计时,因为某些属性getter需要执行计算。 如果没有更好的方法,我可能需要在我的getter中实现某种逻辑来丢弃不必要的读取。 我错过了什么吗? 有没有更好的办法? 不要说使用不同的演示技术 – 我在Windows Mobile上这样做(尽管行为也发生在完整的框架上)。 这里有一些玩具代码来演示这个问题。 单击该按钮将导致即使一个属性已更改,也会填充两个文本框。 using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; namespace Example { public class ExView : Form { private Presenter _presenter = new Presenter(); public ExView() { this.MinimizeBox = false; TextBox txt1 = new TextBox(); txt1.Parent = this; txt1.Location = new Point(1, 1); […]

更新PropertyGrid

当SelectedObject属性中的对象发生更改时,如何自动更新属性网格? 我已经尝试在我的类中实现INotifyPropertyChanged但是属性网格实际上并没有在后台显示对象的新属性,直到我点击它。 我已经尝试直接订阅我的对象的PropertyChanged事件,并在调用它时调用PropertyGrid的Refresh()方法。 但是我的一些房产是相关的。 更改一个属性的含义可能会引发多个PropertyChanged事件。 这似乎工作正常,但我仍然想知道是否有更简洁的方法通过DataBinding这样做。 此外,我还想避免在用户仅更新单个属性后多次使用控件Refresh。 那么有没有办法让PropertyGrid从PropertyChanged事件中刷新?

如何在ViewModel中订阅PropertyChanged事件?

我有封装在ViewModelBase核心function 现在我想查看ViewModelBase引发PropertyChanged事件的时间并对其进行操作。 例如,在ViewModelBase上更改了一个属性时 – 我想在ViewModel上更改属性 我该如何实现这一目标? public class MaintainGroupViewModel : BaseViewModel { public abstract class BaseViewModel : NotificationObject, INavigationAware where T : Entity {

将INotifyPropertyChanged添加到模型?

我在我的wpf MVVM(基于Prism的)应用程序中遇到了一些设计问题,很乐意得到你的建议。 我的模型非常简单: public class Customer { public string FirstName {get;set;} public string LastName {get;set;} } 如您所见,我的Model类没有任何INotifyPropertyChnaged支持。 我还在CustomerDetails屏幕上有ViewModel,它支持INotifyPropertyChanged。 public class CustomerDetailsViewModel:INotifyPropertyChanged /*Or NotificationObject*/ { /*INotifyPropertyChanged event */ private Customer item; public Customer Item { get{return item;} set { item=value; //Raise PropertyChanged //Set IsDirty to true } } } 在我看来,我正在使用绑定到Item.FirstName和我正在更新的ViewModel。 我的问题是 – 因为只有FirstName属性通过View更新,而Model本身不支持INotifyPropertyChanged,因此Item setter没有被调用,并且IsDirty仍然等于false(因此不会更新IsDirty通知)用户界面)。 我知道我可以在模型中支持INotifyPropertyChanged,然后在视图模型中注册到Item.PropertyChanged事件,并实际将IsDirty设置为true,但是 – […]

使用INotifyPropertyChanged的代码片段

我找到了INotifyPropertyChanged的这段代码片段 但是它显示了这样的代码: 我会这样的: 公众:第一个字母的大写字母+ … 私人:第一个字母+下划线+小写字母+ … 我怎样才能做到这一点? 编辑:无需键入公共和私有字段 type Property type string property Property name MyProperty notifyMethod name of method to raise PropertyChanged event NotifyPropertyChanged

INotifyPropertyChanged用于静态变量

我有一个非静态的变量,并且INotifyPropertyChanged成功实现。 然后我尝试将其设为全局,因此将其变为静态变量。 但这一次,INotifyPropertyChanged不起作用。 有解决方案吗