gpt4 book ai didi

c# - PropertyChanged 事件未正确处理

转载 作者:行者123 更新时间:2023-12-03 10:28:58 27 4
gpt4 key购买 nike

我正在尝试让我的属性更改事件处理程序正常工作,并且我已经使用调试器检查了正在调用 OnPropertyChanged 方法,但它并没有像我期望的那样调用该方法。

public class MainViewModel : ObservableObject
{
public MainViewModel()
{
_characterSelection = new CharacterSelectionViewModel();
_characterSelection.PropertyChanged += new PropertyChangedEventHandler(characterSelection_PropertyChanged);
}

private void characterSelection_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName.Equals("Character"))
{
_character = _characterSelection.Character;
_currentView = _newCharacter;
OnPropertyChanged("CurrentView");
}
}
}

[Serializable]
public class ObservableObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;

// Create the OnPropertyChanged method to raise the event
protected void OnPropertyChanged(string property)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(property));
}
}
}

public class CharacterSelectionViewModel : ObservableObject
{
private void newCharacter()
{
CharacterSaver.SaveCharacter(CharacterName, _character);
OnPropertyChanged("Character");
}
}

我已经用调试器逐步完成了这个, MainViewModel() 的构造函数被调用,并添加 PropertyChangedEventHandler .
此时, _characterSelection's PropertyChanged事件具有此值:(来自调试器中的本地选项卡)
{Method = {Void characterSelection_PropertyChanged(System.Object, System.ComponentModel.PropertyChangedEventArgs)}}

一次 newCharacter CharacterSelectionViewModel 中的方法被调用,它调用 OnPropertyChanged .
此时, _characterSelection's PropertyChanged事件有这个值:
{Method = {Void OnPropertyChanged(System.Object, System.ComponentModel.PropertyChangedEventArgs)}}
OnPropertyChanged事件到达 handler(this, new PropertyChangedEventArgs(property));行,但 characterSelection_PropertyChanged()永远不会被调用。没有错误被抛出。

我错过了什么?谢谢你的帮助。

最佳答案

您可能已经设置了绑定(bind),以便拥有一个单独的 CharacterSelectionViewModel 实例。而不是 MainViewModel 上的实例.检查您的绑定(bind)以确保您正确绑定(bind)到 MainViewModel ,并且您正在使用它的 CharacterSelectionViewModel 实例为您的ICommand绑定(bind)以确保正确引发您订阅的事件(在正确的实例上)。

关于c# - PropertyChanged 事件未正确处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17773869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com