【问题标题】:Get value from a variable from another viewmodel从另一个视图模型的变量中获取值
【发布时间】:2015-07-04 08:30:25
【问题描述】:

在 ViewModel A 中,我有一个字符串变量 _projectName

视图模型 A:

private string _projectName;
private void ProjectName(string ProjectName)
{
    _projectName = ProjectName;
}

稍后当 ViewModel B 被调用时,我想使用此实例的值并将其设置为数据库连接的数据源

视图模型 B

String dbConnectionString = @"Data Source =" + _projectName + "" + ".sqlite";

【问题讨论】:

    标签: c# wpf mvvm instance viewmodel


    【解决方案1】:

    让它成为一个属性:

    Public string ProjectName
    {
       get;
       private set;
    }
    private void ProjectName(string projectName)
    {
        this.ProjectName = projectName;
    }
    

    通过这种方式,您可以从同一个类中设置此属性,但您可以在任何地方访问它。

    【讨论】:

      【解决方案2】:

      最好的方法是将project name 保存在static property 中,可能是因为此信息将用于应用程序的各个部分,因此您不必依赖instance得到它。 您可以拥有一个名为GeneralInformationstatic class,其中包含您project 的所有一般信息。 下面是一个例子:

      public static class GeneralInformation
      {
           public static String ProjectName {get;set;}
      
           //others general property's
      }
      

      不要使用instance 来设置project name 的值,而是执行以下操作:

      GeneralInformation.ProjectName = "nameyourprojectname";
      

      要在ViewModel B 中使用project name 的存储值,请执行以下操作:

      String dbConnectionString = String.Format("Data Source ={0}.sqlite", GeneralInformation.ProjectName);
      

      【讨论】:

      • 以这种方式使用静态类违背了 MVVM 的精神(其中之一是松耦合)并导致紧耦合,使单元测试更加困难。如果你真的想在 MVVM 中做类似的事情,你最好让它成为一个普通的类(一种服务)并将它注册为你的依赖注入容器的单例。然后还有一个松耦合
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多