Windows Phone 数据绑定

培训第五章 数据存储 网络 推送

     数据存储
         临时数据存储
	    每一个页面都有一个状态字典
	        用来存储页面的临时数据
		定义在PhoneApplicationPage中
            每一个程序都有一个状态字典
	        存储程序的一些状态,
		定义在PhoneApplicationService


	 持久数据存储
	      持入数据存储介绍
	      
	      IsolatedStorageSettings
	          IsolatedStorageSettings在独立存储中 Dictionary<TKey,TValue>
		  使用步骤:
		      1: 获取一个IsolatedStoragedSettings实例
		         IsolatedStoragedSettings MySetting = IsolatedStorageSettings.ApplicationSettings;
		      2: MySetting["name"] = this.name.Text;
		         MySetting.Save();
		      3: 读取数据
		         name.Text = MySetting["name"] as string;
			 age.Text = MySetting["age"] as string;
	      
	      IsolatedStorageFile
	           表示包含文件和目录
		   涉及到的一些其它类
		   StreamWriter---写入
		   StreamReader---读取


	      
	      DataContext(本地数据库)
	         Windows Phone中使用的数据库为SQL Linq
		 DataContext代表一个数据库对象
		 使用LinQ to Sql进行数据的存储和访问
		 数据库的操作
		     创建数据库
		     插入,查询,更新,删除




	 拷贝工程中的文件至独立存储
	 其它

     网络
     推送

    



培训第八章 依赖属性 数据绑定
    
    依赖属性
        依赖属性的引入

	依赖属性的定义和使用
	
	附加属性
	   IS DP
	   AddOwner
	   Canvas.Left/Grid.Row等
	   
	
	属性继承


    绑定
         绑定介绍
	     含义:一种与数据进行交互的简单方法
	     涉及到四个内容
	         绑定源
		 绑定目标
		 绑定对象
		 转换器

	 数据流向
	     绑定有Mode属性,它决定了数据的流向
	     OneTime
	     OneWay
	     TwoWay

	 ElementName和绑定路径
	     ElementName binding
	       通过ElementName指定绑定数据
             Path Variant
	       绑定到绑定源的某个属性

	 Source绑定
	 DataContext绑定
	     定义在FrameworkElement
	     可以动态改变DataContent
	 绑定转换器
	 属性改变通知

  

    <!--  LayoutRoot 是包含所有页面内容的根网格  -->
    <Grid x:Name="LayoutRoot" Background="Transparent">


        <!--  效果没有显示出来  -->
        <!--
            <Slider Margin="0,0,0,369"
            FontSize="30"
            Foreground="Red"
            Maximum="100"
            Value="30" />
            <TextBlock Margin="10,216,-10,324"
            FontSize="30"
            Text="{Binding ElementName=slider,
            Path=Value,
            Converter={StaticResource DataConverter1},
            ConverterParameter='1'}" />
            
            <TextBlock Margin="10,307,-10,233"
            FontSize="30"
            Text="{Binding ElementName=slider,
            Path=Value,
            Converter={StaticResource DataConverter1},
            ConverterParameter='2'}" />
        -->


        <!--
            <StackPanel x:Name="StackPanel1">
            <TextBlock Text="{Binding Name}" />
            <TextBlock Text="{Binding Sex}" />
            <TextBlock Text="{Binding Location}" />
            </StackPanel>
            <Button HorizontalAlignment="Center"
            VerticalAlignment="Top"
            Click="Button_Click"
            Content="Next" />
        -->


        <!--
            <Grid x:Name="ContentPanel"
            Grid.Row="1"
            Margin="12,0,12,0">
            <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Slider x:Name="slider1"
            Grid.Row="0"
            Maximum="100"
            Value="30" />
            <TextBlock Grid.Row="1" Text="{Binding ElementName=slider1, Path=Value}" />
            <StackPanel Grid.Row="2" Orientation="Horizontal">
            <TextBox x:Name="myName"
            Width="200"
            Text="xxd" />
            <TextBlock Text="Binding variant1:" />
            <TextBlock Text="{Binding ElementName=myName, Path=Text}" />
            </StackPanel>
            
            </Grid>
        -->


        <!--
            <Grid x:Name="ContentPanel"
            Grid.Row="0"
            Margin="12,0,12,0">
            <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <TextBlock x:Name="textBlock1"
            Grid.Row="0"
            Text="To be BindTarget" />
            <StackPanel Grid.Row="1"
            VerticalAlignment="Top"
            Orientation="Horizontal">
            <Button x:Name="button1"
            Click="button1_Click"
            Content="Bind to Button1"
            Tag="tag1" />
            <Button x:Name="button2"
            Click="button2_Click"
            Content="Bind to Button2"
            Tag="tag2" />
            </StackPanel>
            </Grid>
        -->

        <!--
            <Grid x:Name="ContentPanel"
            Grid.Row="0"
            Margin="12,0,12,0">
            <StackPanel>
            <TextBlock x:Name="textBlock1"
            Opacity="0"
            Text="Link To <a href="//Page1.xaml"> Page1 </a>" />
            <local:RichTextBlock Foreground="Red" Text="{Binding ElementName=textBlock1, Path=Text}" />
            </StackPanel>
            </Grid>
        -->


        <!--
            <Grid x:Name="ContentPanel"
            Grid.Row="0"
            Margin="12,0,12,0">
            
            <StackPanel HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Orientation="Horizontal">
            <TextBlock Text="{Binding RelativeSource={RelativeSource Self}, Path=FontFamily}" />
            <TextBlock Text=" - " />
            
            <TextBlock Text="{Binding RelativeSource={RelativeSource Self}, Path=FontSize}" />
            <TextBlock Text=" pixels" />
            </StackPanel>
            
            </Grid>
        -->



        <Grid x:Name="ContentPanel"
              Grid.Row="0"
              Margin="12,0,12,0">
            <StackPanel x:Name="stackPanel1">
                <TextBlock Text="{Binding Name}" />
                <TextBlock Text="{Binding Sex}" />
                <TextBlock Text="{Binding Location}" />
                <Button Click="Button_Click_1" Content="ChangeLocation" />
            </StackPanel>
        </Grid>








    </Grid>

  

    public partial class MainPage : PhoneApplicationPage
    {
        private List<Profile> profiles;

        private int index;

        private Profile profile1;

        // 构造函数
        public MainPage()
        {
            InitializeComponent();

            // 将 listbox 控件的数据上下文设置为示例数据
            //DataContext = App.ViewModel;

            // 用于本地化 ApplicationBar 的示例代码
            //BuildLocalizedApplicationBar();


            //var binding = new System.Windows.Data.Binding() {ElementName = "slider1", Path = new PropertyPath("Value")};
            //textBlock1.SetBinding(TextBlock.TextProperty, binding);


            //Profile profile1 = new Profile("Xlc","男","北京");
            //StackPanel1.DataContext = profile1;



            /*profiles = new List<Profile>();
            Profile profile0 = new Profile("xlc","男","男");
            profiles.Add(profile0);
            profiles.Add(new Profile("xlc","男","北京"));
            profiles.Add(new Profile("xianglingchuan","女","四川"));
            index = 0;
            StackPanel1.DataContext = profile0;*/

            profile1 = new Profile("Vincent","Male","Beijing");
            stackPanel1.DataContext = profile1;
        }
        


        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            profile1.Location = "Heilongjiang";
            profile1.MakeLocationChange();
        }


        /*private void button1_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Data.Binding binding1 = new System.Windows.Data.Binding() { ElementName = "button1", Path = new PropertyPath("Content") };
            textBlock1.SetBinding(TextBlock.TextProperty, binding1);
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Data.Binding binding2 = new System.Windows.Data.Binding() { ElementName = "button2", Path = new PropertyPath("Content") };
            textBlock1.SetBinding(TextBlock.TextProperty, binding2);
        }*/



        // 为 ViewModel 项加载数据
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {

        }

        /*xprivate void Button_Click(object sender, RoutedEventArgs e)
        {
            index++;
            if (index >= profiles.Count)
                index = 0;
            StackPanel1.DataContext = profiles[index] as Profile;
        }*/
    }

  

你可能感兴趣的:(windows phone)