我有一个类代表UI上某些控件的当前状态,具体取决于用户操作的情况:
public class CanDoAbility
{
public bool CanAdd { get; set; }
public bool CanDelete { get; set; }
public bool CanEdit { get; set; }
public bool CanCancel { get; set; }
public bool CanPrint { get; set; }
public bool CanSave { get; set; }
public bool CanEditFields { get; set; }
public CanDoAbility()
{
CanAdd = true;
CanDelete = true;
CanEdit = true;
CanCancel = false;
CanPrint = true;
CanSave = false;
CanEditFields = false;
}
}
然后,我在ViewModel中创建了一个实例,As:
public CanDoAbility ViewCanDoAbility { get; set; }
并在ViewModel构造函数中启动它(我在ViewModel中实现BindableBase):
public MyView(){
ViewCanDoAbility = new CanDoAbility();
InitiateCanDoAbility();}
此外,在ViewModel中,我添加了:
OnPropertyChanged(() => ViewCanDoAbility.CanEditFields);
最后,使用XAML中的Binding将其绑定到UI。为:
<Button Content="Edit" Command="{Binding UpdateCommand}" IsEnabled="{Binding ViewCanDoAbility.CanEdit}"/>
问题是:
我检查时,ViewModel中的 ViewCanDoAbility 的值正在发生变化。但是,在视图内部并非如此。如何解决这个问题,因为我将在我的应用程序中的许多ViewModel中使用这个类。
顺便说一下: 我试图直接在ViewModel中创建相同的属性,并且它可以工作。
答案 0 :(得分:1)
由于您已经从抽象类 BindableBase 派生,因此您只需要调用set属性。所以不是[ // json is contained in an array bcoz there are multiple objects
{
"schools": [
{
"name": "University of Hertfordshire"
},
{
"name": "University of Applied Sciences"
}
]
},{ // the `}` your code was missing
"onlineCourses": [
{
"title": "Javascript Syntax"
}]
}
] // end of json array
在您的代码中执行此操作并检查其是否正常工作。
public bool CanEdit { get; set; }