WPF筆記(1.8 資源與映射)——Hello,WPF!

來源:互聯網
上載者:User

終於,看明白了,已經是淩晨1:39分。
這本書這一節寫得實在是不好,一個local搞得我糊裡糊塗,於是,準備按照他的思路,按照我的理解,改寫一遍,包括原始碼。
首先,這句話WPF新版本已經不用了:
<?Mapping XmlNamespace="local" ClrNamespace="DataBindingDemo" ?>,這裡DataBindingDemo是例子的命名空間。
然後Window標籤中這個屬性設定
xmlns:local="local"——改為:
xmlns:local="clr-namespace:DataBindingDemo",這裡把命名空間DataBindingDemo與命名空間local進行mapping。clr-namespace是固定文法,這能這麼寫。
接下來,在<Window.Resources>中設定資源:

        <local:Nicknames x:Key="XX">
            <local:Nickname Name="Don" Nick="Naked" />
            <local:Nickname Name="Martin" Nick="Gudge" />
            <local:Nickname Name="Tim" Nick="Stinky" />
        </local:Nicknames>

這裡local等價於DataBindingDemo,所以有NickName類,我們聲名一個該類下的對象叫做XX,我們要做的是給XX增加一些資源,就是Nickname對象,於是有了相應的三筆資料。
*注,x:Key用於擷取建立對象的名字。

然後在DockPanel中進行綁定,直接指到XX資源,這個剛才定義並賦值的對象:
 <DockPanel DataContext="{StaticResource XX}">

這樣,相應的後台建構函式改動為:

        public Window1()
        {
            InitializeComponent();
 
            this.addButton.Click += addButton_Click;

            // get names collection from resources
            this.names = (Nicknames)this.FindResource("XX");

            // no need to make data available for binding here
            //dockPanel.DataContext = this.names;
          }

可以看到,初始化和綁定按鈕事件沒有改變,下面這句話是關鍵:
this.names = (Nicknames)this.FindResource("XX");
也就是說,找到前台axml的XX對象,拆箱後轉給names私人變數。不用再給dockPanel綁定資料了,因為前台xaml已經實現綁定了。

——例子討論完畢。

最後再討論一下xaml的Mapping文法:重畫一下那張圖吧(原圖有問題):

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.