C# XAML数据绑定类单例MVVM对象 笔记

C# XAML数据绑定类单例MVVM对象 笔记,c#,xaml,data-binding,mvvm,windows-phone-8,C#,Xaml,Data Binding,Mvvm,Windows Phone 8,我是一个新手,我有时会陷入简单和/或愚蠢的想法,这就是其中之一 我对数据绑定有了大致的了解,我在网上浏览了一些教程,在谷歌上搜索了几个小时,浏览了大量的文本,这只会让我有点困惑 问题 我正在开发Windows Phone 8 C#/XAML.NET 4.5应用程序 使用提供给我的Web服务和一些方法,我正在加载我需要查看的数据(有时以不同的组合),并且我需要在应用程序运行时存储大部分数据 为此,我创建了一个视图模型+几个模型,并按如下方式构建它们: MainViewModel --------

我是一个新手,我有时会陷入简单和/或愚蠢的想法,这就是其中之一

我对数据绑定有了大致的了解,我在网上浏览了一些教程,在谷歌上搜索了几个小时,浏览了大量的文本,这只会让我有点困惑

问题 我正在开发Windows Phone 8 C#/XAML.NET 4.5应用程序

使用提供给我的Web服务和一些方法,我正在加载我需要查看的数据(有时以不同的组合),并且我需要在应用程序运行时存储大部分数据

  • 为此,我创建了一个视图模型+几个模型,并按如下方式构建它们:

    MainViewModel
    --------------
    |
    + several properties (Username, Password, etc...)
    |
    + Commands (loadData1, loadData2, flush, ...  - implementations of ICommand)
    |
    + ------ PersonalInfoModel
    |        -----------------
    |        + several properties (name, surname, phonenumber, etc...)
    |
    |             
    + ------ DataGroup1Model
    |        ---------------
    |        +several properties
    |        +ObservableCollection<Item1> (roughly 0 - 50 items)
    |        +ObservableCollection<Item2> (roughly 0 - 5 items)
    |        +ObservableCollection<string> (roughly 0 - 5 items)
    |        
    |                  Item1                         Item2
    |                  -----                         -----
    |                  +several properties           +several other properties
    |                  
    |
    + ------ DataGroup2Model (similar to previous)
    ...et cetera...
    
    注意:我从一些人那里听说MVVM可能/应该有不同的使用方式,我应该为每个页面创建一个ViewModel,而不是从一个类似singleton的类绑定。经过一番考虑,我决定让它像现在一样


  • 我现在想做的是设置我创建的作为XAML中绑定的源/数据上下文的
    viewModel

问题
  • 如何实现这一点?

  • 如果我想将listBox/longListSelector的
    itemSource
    或文本框的
    Text
    设置为值,例如
    MainViewModel
    中的
    PersonalInfoModel
    ,我应该如何操作?


  • 旁白:正如问题开头的便条所写,我是个新手。我知道有时候这对我们来说很难,但是没有一个伟大的思想家是从伟大的虚空中产生的,这就是为什么我要求一个更详细的解释,然后只是“你可以在窗口中将你的对象设置为数据源,然后再设置它”。

    你问的问题基本上是:我如何连接视图和视图模型?我完全同意,这是开始使用MVVM时要解决的最令人困惑的问题,而且很多关于MVVM的教程和帖子都完全忽略了这个问题

    答案是:有很多方法可以让ViewModel达到您想要的位置,即在视图的
    DataContext
    中。虽然您可以完全在XAML中完成此操作,但Microsoft建议将
    DataContext
    设置为这样,就我所能回忆起的WP项目模板而言:

    在codebehind中的视图构造函数中,只需调用:

    DataContext = App.MainViewModel;
    
    帮助我解决这个问题的最有价值的来源之一是

    这是关于WPF而不是WP8的,但它应该会有所帮助

    要执行实际绑定,现在可以按照教程进行操作,例如:

    <TextBlock Text="{Binding PersonalInfoModel.Name}" />
    

    您要问的问题基本上是:如何连接View和ViewModel?我完全同意,这是开始使用MVVM时要解决的最令人困惑的问题,而且很多关于MVVM的教程和帖子都完全忽略了这个问题

    答案是:有很多方法可以让ViewModel达到您想要的位置,即在视图的
    DataContext
    中。虽然您可以完全在XAML中完成此操作,但Microsoft建议将
    DataContext
    设置为这样,就我所能回忆起的WP项目模板而言:

    在codebehind中的视图构造函数中,只需调用:

    DataContext = App.MainViewModel;
    
    帮助我解决这个问题的最有价值的来源之一是

    这是关于WPF而不是WP8的,但它应该会有所帮助

    要执行实际绑定,现在可以按照教程进行操作,例如:

    <TextBlock Text="{Binding PersonalInfoModel.Name}" />
    
    
    
    谢谢。这有帮助:)现在有第二个问题。我有一个包含对象
    PersonalInfo
    的ViewModel,它有一个属性,例如
    用户名
    ,我想绑定到该属性。怎么做?就这些;)谢谢这有帮助:)现在有第二个问题。我有一个包含对象
    PersonalInfo
    的ViewModel,它有一个属性,例如
    用户名
    ,我想绑定到该属性。怎么做?就这些;)