MvvmLight RaisePropertyChanged("")
MvvmLight RaisePropertyChanged("")
根据 MSDN doc on PropertyChanged,如果将空字符串传递给方法,所有属性都会刷新。使用MvvmLight RaisePropertyChanged 时有这样的事情吗?传递 "" 只是用 "" 抛出事件。
不确定 MVVM-Light,但这是您可以使用 .net fx 4.5 + 执行的操作:
using System.Runtime.CompilerServices;
class SomeClass : INotifyPropertyChanged
{
private int somefield;
public int SomeProperty
{
get { return somefield; }
set
{
somefield = value;
OnPropertyChanged();
}
}
public void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged = delegate { };
}
MVVM Light 似乎有一个检查功能,可以检查您传入的 属性 名称是否存在。这在这种情况下没有意义。
快速搜索显示 issue logged on the CodePlex site 并标记为已关闭并已修复,它似乎已在最新的代码库中修复。您使用的是什么版本?
如果您无法升级,我想您可以添加自己的调用器(注意受保护的 PropertyChangedHandler
访问器存在于 5.x 中,我不知道它是否存在于您的版本中)。
private void RaiseAllPropertiesChanged()
{
var handler = PropertyChangedHandler;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(string.Empty));
}
}
如果您使用的是 V3,似乎没有解决方案(PropertyChangedHandler
不存在并且 属性 验证将抛出您所看到的异常)。由于这似乎是一个已修复的已知错误,我建议使用更高版本。
最近在 MvvmLight 5.3 上遇到了这个问题,我很困惑为什么下面的内容没有更新我 UI 上的所有绑定属性:
RaisePropertyChanged();
事实上,为了更新所有属性,必须将一个空的 string
传递给 RaisePropertyChanged
,此时所有属性都会更新:
RaisePropertyChanged(string.Empty);
根据 MSDN doc on PropertyChanged,如果将空字符串传递给方法,所有属性都会刷新。使用MvvmLight RaisePropertyChanged 时有这样的事情吗?传递 "" 只是用 "" 抛出事件。
不确定 MVVM-Light,但这是您可以使用 .net fx 4.5 + 执行的操作:
using System.Runtime.CompilerServices;
class SomeClass : INotifyPropertyChanged
{
private int somefield;
public int SomeProperty
{
get { return somefield; }
set
{
somefield = value;
OnPropertyChanged();
}
}
public void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged = delegate { };
}
MVVM Light 似乎有一个检查功能,可以检查您传入的 属性 名称是否存在。这在这种情况下没有意义。
快速搜索显示 issue logged on the CodePlex site 并标记为已关闭并已修复,它似乎已在最新的代码库中修复。您使用的是什么版本?
如果您无法升级,我想您可以添加自己的调用器(注意受保护的 PropertyChangedHandler
访问器存在于 5.x 中,我不知道它是否存在于您的版本中)。
private void RaiseAllPropertiesChanged()
{
var handler = PropertyChangedHandler;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(string.Empty));
}
}
如果您使用的是 V3,似乎没有解决方案(PropertyChangedHandler
不存在并且 属性 验证将抛出您所看到的异常)。由于这似乎是一个已修复的已知错误,我建议使用更高版本。
最近在 MvvmLight 5.3 上遇到了这个问题,我很困惑为什么下面的内容没有更新我 UI 上的所有绑定属性:
RaisePropertyChanged();
事实上,为了更新所有属性,必须将一个空的 string
传递给 RaisePropertyChanged
,此时所有属性都会更新:
RaisePropertyChanged(string.Empty);