mvvm-light视图模型没有跨多个程序集进行完全的数据绑定



我们有一个项目,它具有这样的项目程序集结构:

    <
  • 培训模型/gh>
  • XAML表单,通过mvvm光照视图模型/定位器绑定到模型

一切正常

在加载事件中,我们重新分配模型,有效地:

ViewModelLocator.Main.Training = new Training();

这工作得很好,模型仍然是所有绑定和更新,以显示表单上的新数据。

为了整洁,我们想把ViewModel移到它自己的项目/程序集中。即实现如下结构:

    <
  • 培训模型/gh>
  • XAML表单
  • mvvm灯光视图模型/定位器

这是ViewModel:

public class MainViewModel : ViewModelBase
{
    private Training training;
    /// <summary>
    /// Initializes a new instance of the MainViewModel class.
    /// </summary>
    public MainViewModel()
    {
        this.training = new Training();
    }
    public Training Training
    {
        get
        {
            return this.training;
        }
        set
        {
            this.training = value;
        }
    }
}

ViewModel有一个默认的定位器:

public class ViewModelLocator
{
    /// <summary>
    /// Initializes a new instance of the ViewModelLocator class.
    /// </summary>
    public ViewModelLocator()
    {
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
        SimpleIoc.Default.Register<MainViewModel>();
    }
    public static MainViewModel Main
    {
        get
        {
            return ServiceLocator.Current.GetInstance<MainViewModel>();
        }
    }
    public static void Cleanup()
    {
        // TODO Clear the ViewModels
    }
}

当我将ViewModel移动到它自己的程序集中并运行项目时,在初始运行时,XAML的数据被正确绑定到模型实例。在如上所示分配新的Training对象时,表单不会更新。

考虑到唯一不同的是mvw -light视图模型在另一个程序集中,什么可能导致这种情况?

谢谢

您需要将您的Training属性更改为:

public Training Training
{
    get
    {
        return this.training;
    }
    set
    {
        Set(()=>Training, ref this.training, value);
    }
}

相关内容

  • 没有找到相关文章

最新更新