C# 如何将实体的属性更改反映到WPF中的ViewModal
我有一个从INOTIFYPROPERTYCHANGED继承的实体,这个实体绑定到我的UI元素,比如TextBOX。现在,当任何属性发生更改时,我的绑定都会更新,一切正常。我想在viewmodal中捕获此propertychanged事件。我的viewmodal还继承了INOTIFYPROPERTYCHANGEDC# 如何将实体的属性更改反映到WPF中的ViewModal,c#,wpf,C#,Wpf,我有一个从INOTIFYPROPERTYCHANGED继承的实体,这个实体绑定到我的UI元素,比如TextBOX。现在,当任何属性发生更改时,我的绑定都会更新,一切正常。我想在viewmodal中捕获此propertychanged事件。我的viewmodal还继承了INOTIFYPROPERTYCHANGED 实体 public class DIPREDIPForView:INotifyPropertyChanged { #region PrivateFields priva
实体
public class DIPREDIPForView:INotifyPropertyChanged
{
#region PrivateFields
private string fieldDelimiter, textQualifier;
#endregion
public DIPREDIPForView()
{
}
public string FieldDelimiter
{
get
{
return fieldDelimiter;
}
set
{
fieldDelimiter = value;
OnPropertyChanged("FieldDelimiter");
//NotifyViewModalEvent();
}
}
public string TextQualifier {
get
{
return textQualifier;
}
set
{
textQualifier = value;
OnPropertyChanged("TextQualifier");
//NotifyViewModalEvent();
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
public virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
#endregion
VIEWMODAL
public class DIPREDIPViewModel : BaseViewModel
{
public DIPREDIPForView Configuration
{
get
{
return configuration;
}
set
{
configuration = value;
}
}
}
BaseViewModal
public class BaseViewModel : INotifyPropertyChanged, IDisposable
{
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
public virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
#endregion
}
我想要的是,每当“配置”更改时,都应该通知ViewModal,因为我必须基于此调用其他逻辑
我曾尝试在配置的setter中调用OnPropertyChanged(),但它没有启动。每当我在UI上更新一个值时,这个配置都会更新,但不会命中setter中的断点。如何实现这一点。视图模型或视图模型库都没有订阅PropertyChanged事件。因此,当DIPREDIPForView引发事件时,这两个对象都不会收到事件通知 DIPREDIPViewModel可能需要订阅DIPREDIPForView上的PropertyChanged,事件订阅需要指向BaseViewModel上的OnPropertyChanged事件处理程序 不确定这是否是你要找的 这是一个样本
[Test]
public void TestEventIsRaised()
{
TestEventSubscriber subscriber = new TestEventSubscriber();
subscriber.SetFirstName("joe");
Assert.IsTrue(subscriber.EventWasHandledInTestDouble);
}
public class TestEventSubscriber : EventSubscriber
{
public bool EventWasHandledInTestDouble;
public TestEventSubscriber()
{
}
protected override void OnMyEvent(object sender, EventArgs args)
{
EventWasHandledInTestDouble = true;
}
}
public class EventSubscriber
{
private EventRaiser eventRaiser = new EventRaiser();
public EventSubscriber()
{
eventRaiser.MyEvent += (sender, args) => {
Console.Write("Event was handled via anonymous delegate");
};
eventRaiser.MyEvent = OnMyEvent;
}
public void SetFirstName(string firstName)
{
eventRaiser.FirstName = "bob";
}
protected virtual void OnMyEvent(object sender, EventArgs args)
{
Console.WriteLine("Event was handled via virtual method...");
}
}
public class EventRaiser
{
public EventHandler MyEvent;
public EventRaiser()
{
}
private string firstName;
public string FirstName
{
get
{
return firstName;
}
set
{
firstName = value;
EventHandler handler = this.MyEvent;
if (handler != null)
MyEvent(this, EventArgs.Empty);
}
}
}
ViewModel是您的模型的视图。
我会考虑以下内容: