c# - MVVM Light - RaisePropertyChanged 不起作用

标签 c# mvvm windows-phone mvvm-light

我有一个绑定(bind)到一个名为 SettingsView 的页面的 ViewModel。
在这个页面中,我有一些这样的属性:

public string SettingsHeaderTitle { get { return AppResources.settings_header_title; } }

我有一个按钮可以导航到另一个页面,我们可以在其中更改语言,然后返回 SettingsPage。
我已经实现了这样的命令:
public void UpdateView() 
{
    RaisePropertyChanged(string.Empty);
}

我的问题是,当我从 Loadedd 或 NavigatedTo 事件调用此命令时,什么也没有发生。然后我添加了一个按钮来调用这个命令(用于调试目的)并且页面更新成功。

我究竟做错了什么?

最佳答案

您需要执行 INotifyPropertyChanged在你的 ViewModel 上像这样

public class SelectionItem<T> : INotifyPropertyChanged
{
    private AppliesTo _appliesTo;
    public AppliesTo AppliesTo
    {
        get { return _appliesTo; }
        set
        {
            _appliesTo = value;
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs("AppliesTo"));
        }
    }
}

编辑:我刚刚注意到您正在使用 MVVM Light,然后它变得更加容易,在您的 ViewModels 中继承自 ViewModelBase并使您的属性(property)像这样:
private bool _isComparisonRun;
public bool IsComparisonRun
{
    get { return _isComparisonRun; }
    set
    {
        if (_isComparisonRun == value) return;
        _isComparisonRun = value;
        RaisePropertyChanged(() => IsComparisonRun);
    }
}

关于c# - MVVM Light - RaisePropertyChanged 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24208524/

相关文章:

ios - 尽管属性已更改,但应用程序不会立即更新 View

c# - Datagrid列可以在不同的行中包含不同类型的控件吗

javascript - Lumia 640 LTE edge explorer - 未定义 javascript $

c# - (Linq to Sql) 中 (Linq to Entity) 的 GetCommand() 函数的等价物

c# - 实现蜂鸣功能

c# - 如何在不手动设置的情况下将绑定(bind)属性作为参数传递

android - Cocos2d-x跨平台游戏开发

c# - 刷新 WPF 中的 EF 数据绑定(bind)

c# - Resharper 支持 NUnit 3.0 alpha

c# - WP7.8 : Bound items in scrollbox updated with wrong data