Windows Phone 8.1中資料繫結之一

來源:互聯網
上載者:User

標籤:datacontext   binding   path   elementname   wp資料繫結   

資料繫結,顧名思義,兩個要義:一是資料,而是綁定

然而再一想,是誰將資料繫結到誰的屬性上面,這一句話就道出了資料繫結的四個關鍵對象:繫結目標對象、目標屬

性、繫結來源、繫結來源中要綁定的值。


根據綁定對象和繫結來源來劃分,其實無非就兩種:

UI控制項作為綁定對象,UI控制項作為繫結來源(資料來源)

UI控制項作為綁定對象,自訂的資料對象作為繫結來源(資料來源,.cs中定義)

不管是前者還是後者,無非採用的是Binding這個神器來設定的。主要用到Binding的ElementName屬性和Path屬性

兩個屬性。ElementName屬性賦值為資料來源控制項的Name的值,Path屬性則賦值為資料來源控制項的某個屬性,這個屬

性就是資料來源控制項的一個資料變化的反映。

此種方法較為靈活,有多種情形和表現形式,如下(唯寫了Path,不代表沒有ElementName,對於UI到UI是有

ElementName,對於自訂資料來源到UI是沒有ElementName的):

(1)Binding Path=PropertyName

作為UI綁定UI:Binding ElementName=Grid,Path=Width

作為自訂資料來源綁定:Binding Path = propertyName

(2)Binding Path = Screen.Height,可以看作繫結來源是一個電腦對象,Screen(螢幕)是電腦裡的一個屬性,而

Height(高度)又是Screen的一個屬性,這樣就可以看出綁定了資料來源的屬性的屬性

(3)Binding Path = (Grid.Column)

(4)Binding Path = Screen[1]

(5)Binding Path = Screen.ScreenInfo[productor,date]

(6)Binding Path = "[(sys:Int32)3,(sys:Int32)22]",sys表示System命名空間

(7)Binding Path = /,如果源為集合視圖,則制定當前項

(8)Binding Path = /Screen/publisher

(9)Binding Path = .相當於Binding

再者,綁定有三種繫結模式:OneTime,OneWay,TwoWay

OneTime:表示一次綁定,即初次綁定一次,之後不管,資料來源改變也更新不到繫結目標上。也就是說只顯示資料而

不進行資料的更新的待用資料綁定。

OneWay:預設繫結模式。表示單向綁定,即當繫結來源資料發生更改時,會將變化更新到繫結目標上,適用於顯示變

化的資料。

TwoWay:表示雙向繫結,即繫結來源資料和繫結目標上的資料發生改變時,會相互影響,相互反映。這種做法會損耗

額外的效能,不到必須使用最好不要用。


其實對於UI控制項作為綁定對象,UI控制項作為繫結來源(資料來源)這種情況無非是使用上文的Binding設定做文章,重點還是

得在UI控制項作為綁定對象,自訂的資料對象作為繫結來源(資料來源,.cs中定義)的這種情形上,因為這種相對使用的更

廣,更加自由靈活,對於業務和邏輯需要更加貼近。


一般是利用DataContext屬性綁定到來源物件,DataContext屬性工作表示Windows Phone的UI元素的資料內容,可以

給UI元素提供資料。如果給頁面最頂層的Page設定其DatContext屬性綁定到來源物件,那麼整個頁面都可以使用該數

據源提供的資料。具體範例程式碼如下:

XAML代碼:

<Page    x:Class="App1.DataBindDemo1"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:local="using:App1"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    mc:Ignorable="d"    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">    <Grid>        <TextBlock HorizontalAlignment="Center" Text="{Binding test}" FontSize="20"/>    </Grid></Page>

.CS代碼:

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Runtime.InteropServices.WindowsRuntime;using Windows.Foundation;using Windows.Foundation.Collections;using Windows.UI.Xaml;using Windows.UI.Xaml.Controls;using Windows.UI.Xaml.Controls.Primitives;using Windows.UI.Xaml.Data;using Windows.UI.Xaml.Input;using Windows.UI.Xaml.Media;using Windows.UI.Xaml.Navigation;// “空白頁”項目範本在 http://go.microsoft.com/fwlink/?LinkID=390556 上有介紹namespace App1{    /// <summary>    /// 可用於自身或導航至 Frame 內部的空白頁。    /// </summary>    public sealed partial class DataBindDemo1 : Page    {        public class TestData        {            public string test { get; set; }        }        TestData testData = new TestData() { test="這是繫結資料!" };        public DataBindDemo1()        {            this.InitializeComponent();            this.DataContext = testData;        }        /// <summary>        /// 在此頁將要在 Frame 中顯示時進行調用。        /// </summary>        /// <param name="e">描述如何訪問此頁的事件數目據。        /// 此參數通常用於配置頁。</param>        protected override void OnNavigatedTo(NavigationEventArgs e)        {        }    }}


Windows Phone 8.1中資料繫結之一

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.