无法将类从VM绑定到WPF中的View

时间:2016-05-17 22:20:35

标签: wpf xaml mvvm view

我有一个类代表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中创建相同的属性,并且它可以工作。

1 个答案:

答案 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; }