public void AddProfile()
{
//Add conventions for DX Components.
Profile newProfile = new Profile()
{
Description = "New Profile",
DisplayOrder = decimal.MaxValue,
IsActive = true,
IsDefault = false,
IsSelected = true,
ProfileId = 0
};
EditProfileViewModel profile = new EditProfileViewModel(true) { Profile = newProfile };
if (windowManager.ShowDialog(profile,null ) ?? false) // ?? means (coallesce so if null use false value) the line means, if dialog returns true...
{
Profiles.Add(profile.Profile);
NotifyOfPropertyChange(string.Empty);
}
}
可以添加按钮的代码是这样的。
public bool CanAddAllToProfile
{
get
{
var p = Profiles.Where(x => x.IsSelected).FirstOrDefault();
if (p == null)
return false;
if (AvailableModules.Count() == 0)
return false;
return true;
}
}
public void AddAllToProfile()
{
var p = Profiles.Where(x => x.IsSelected).FirstOrDefault();
if (p == null)
return;
foreach (var m in AvailableModules)
p.Modules.Add(m);
NotifyOfPropertyChange(string.Empty);
}
如果我这样编写代码,CanAddAllToProfile 获取不会被执行。
如果我做一个 NotifyOfPropertyChange(() => CanAddAllToProfile) 它工作
我也试过 Refresh();
我从 Screen 继承了 viewmodel 任何想法我有一堆其他需要执行的 CanExecuteBindings。显然这可以解决,但我想知道我是否做错了什么。