mvvm 通用应用程序为什么不挂起

mvvm universal app why it do not pending

我在共享项目中的模型

class model
{
   public string title;
   public string link;
   public string pubDate;
   public string description;
   public string imageLink;
}

和我在共享项目中的视图模型

`class 视图模型:INotifyPropertyChanged { public ObservableCollection _posts { 得到;放; }

    public ObservableCollection<model> posts {
        get {
           return _posts ;
        }
        set
        {
            _posts = value;
            RaisePropertyChanged("posts");
        }
    }


    public viewModel()
    {
        posts = new ObservableCollection<model>
        {
            new model { title="tiltle", description="description", link="link1" },
            new model { title="tiltle2", description="description2", link="link1" },
            new model { title="tiltle3", description="description3", link="link1" },
            new model { title="tiltle4", description="description4", link="link1" },
            new model { title="tiltle5", description="description5", link="link1" },
        };

    }

    public void RaisePropertyChanged(string prop)
    {
        if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(prop)); }
    }
    public event PropertyChangedEventHandler PropertyChanged;
}`

我的xaml

<ListBox x:Name="listBoxControl" ItemsSource="{Binding}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <StackPanel>
                            <TextBlock Text="{Binding Path=title}" />
                            <TextBlock Text="{Binding Path=description}" />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

我的xaml.cs

public MainPage()
    {
        this.InitializeComponent();
        this.DataContext = new viewModel();
       listBoxControl.DataContext = new viewModel().posts;

    }

这是我的第一个问题,我对实现 mvvm 有疑问。但是我对此很了解 当我 运行 我没有看到任何东西

一切都很好,除了你应该在你的 model 中使用带有 getter 的属性,然后你会看到一些东西。

所以:

class model
{
   public string title {get;set;}
   public string link  {get;set;}
   //etc..
}

因为数据绑定适用于属性而不是字段。

旁注: 您不需要命名您的 ListBox 或从后面的代码中设置它的 DataContext,您已经将视图的 DataContext 设置为您的 ViewModel,因此您只需绑定直接添加到您的 ItemsSouce,例如:

<ListBox ItemsSource="{Binding posts}">

即使你这样做的方式也很好。

如果 属性 值在初始化后发生变化,也不要忘记在 model 中实现 INotifyPropertyChanged