MVVM 代码记录

 

一.XML

<Page

    x:Class="MVVM.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:local="using:MVVM"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d"

    

    >





    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

        <Grid.RowDefinitions>

            <RowDefinition Height="120*"></RowDefinition>

            <RowDefinition Height="500*"></RowDefinition>





        </Grid.RowDefinitions>

        <!--<Grid.ColumnDefinitions>

            <ColumnDefinition></ColumnDefinition>

            <ColumnDefinition></ColumnDefinition>

            <ColumnDefinition></ColumnDefinition>

        </Grid.ColumnDefinitions>-->

        <StackPanel Grid.Row="0">

          //绑定数据源  绑定的事viewModel的公有字段  

         <TextBlock Text="{Binding Path=Title1}" FontSize="30"></TextBlock>

            <TextBlock Text="{Binding Path=Title2}" FontSize="60"></TextBlock>

        

        </StackPanel>

        <Grid x:Name="contentRoot"/>

        <ListView Grid.Row="1"  ItemsSource="{Binding Collection}"  Margin="10,10,-10,10">

            <ListView.ItemTemplate>

                <DataTemplate>

                    <StackPanel Orientation="Horizontal">

                        <TextBlock Text="{Binding Name}" FontSize="40" Margin="0 ,0,20,0" />

                        <TextBlock Text="{Binding Gender}" FontSize="40" Margin="0 ,0,20,0" />

                        <TextBlock Text="{Binding Age}" FontSize="40" Margin="0 ,0,20,0" />

                    </StackPanel>

                </DataTemplate>

            </ListView.ItemTemplate>

        </ListView>

    </Grid>

</Page>



二、Model
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;



namespace MVVM

{

    public class PersonModel

    {

        public string Name { get; set; }

        public char Gender { get; set; }

        public int  Age { get; set; }

    }

}

三、ViewModel

using System;

using System.Collections.Generic;

using System.Collections.ObjectModel;

using System.ComponentModel;

using System.Linq;

using System.Text;

using System.Threading.Tasks;



namespace MVVM

{

    //要实现通知 ——>就要实现INotifyPropertyChanged

    public  class PersonViewModel:INotifyPropertyChanged

    {

        private string title1;

        private string title2;

        public PersonViewModel(){}

        public PersonViewModel(string Title1, string Title2, IEnumerable<PersonModel> collection)

        {

            this.title1 = Title1;

            this.title2 = Title2;

            Collection = new ObservableCollection<PersonModel>();

            foreach (var item in collection)

            {

                Collection.Add(item);

                

            }

 

        }

        //实现接口  + 处理方法

        public event PropertyChangedEventHandler PropertyChanged;

        private void EventHendle(string propertyNanme)

        {

            if (PropertyChanged != null)

            {

                PropertyChanged(this,new PropertyChangedEventArgs (propertyNanme));

            }

        }

        

        public string Title1 { get { return title1; }set { Title1 = value;EventHendle(Title1);}}

        public string Title2 { get{return title2;} set{Title2=title2;EventHendle(Title2);}}



        public ObservableCollection<PersonModel> Collection { get; set; }

        

    }

}

 结果如下:
screenshot_11232014_233810

MVVM代码记录,来自传智播客公开课

你可能感兴趣的:(代码)