1. 程式人生 > >Winphone開發之動態載入XAML

Winphone開發之動態載入XAML

XAML是可以動態載入的,這裡所說的動態載入就是說寫好了一個靜態XAML,然後在執行時用C#載入到相應的地方去。

動態載入XAML注意的幾點:

1)待載入的XAML只能有一個根節點,也就是說不能有多個平行的節點

2)待載入的XAML要引入名稱空間xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

3)注意一下載入的語法,看下下面的程式碼就知道了

4)動態載入XAML其實也分為兩種,一種是通過String來載入,一種是載入靜態的XAML,其實載入靜態的XAML是在String的基礎上 改進而已,是首先把XAML載入進記憶體,存為String變數,然後再用String載入的方法載入進去。

下面是主介面XAML:

<phone:PhoneApplicationPage
    x:Class="XmlStudy.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">

    <!--ContentPanel - 在此處放置其他內容-->
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <Button Content="Button" HorizontalAlignment="Left" Margin="163,88,0,0" VerticalAlignment="Top" Click="Button_Click"/>

        <Grid x:Name="MyRoot" HorizontalAlignment="Left" Height="417" VerticalAlignment="Top" Width="458" Margin="12,180,0,0" Grid.Row="1"/>
    </Grid>

</phone:PhoneApplicationPage>

下面是截圖:

待會我要把Button下面動態載入一個Grid控制元件

下面是Code Behind:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using XmlStudy.Resources;
using System.IO;
using System.Windows.Resources;
using System.Windows.Markup;

namespace XmlStudy
{
    public partial class MainPage : PhoneApplicationPage
    {
        // 建構函式
        public MainPage()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string xaml = "";
            StreamResourceInfo info = Application.GetResourceStream(new Uri("/XmlStudy;component/Page1.xaml" ,UriKind.Relative));
            using (StreamReader sr = new StreamReader(info.Stream))
            {
                xaml = sr.ReadToEnd();
            }
            Grid g = (Grid)XamlReader.Load(xaml);
            MyRoot.Children.Add(g);
        }

        
    }
}

上面注意一下載入的語法就行了。

下面是待載入的XAML:

<Grid Background="Transparent"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <!--TitlePanel 包含應用程式的名稱和頁標題-->
    <StackPanel Grid.Row="0" Margin="12,17,0,28">
        <TextBlock Text="新新增頁面" Style="{StaticResource PhoneTextNormalStyle}"/>
        <TextBlock Text="新新增頁面" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
    </StackPanel>
</Grid>


另外要注意的是這個待載入的XAML的屬性要設定為Resource,預設為Page,這樣才能用GetResourceStream載入進去。

然後點選按鈕,載入這個GRID:

載入成功

相關推薦

Winphone開發動態載入XAML

XAML是可以動態載入的,這裡所說的動態載入就是說寫好了一個靜態XAML,然後在執行時用C#載入到相應的地方去。 動態載入XAML注意的幾點: 1)待載入的XAML只能有一個根節點,也就是說不能有多個

PHP擴充套件開發動態載入so模組與靜態重編譯PHP(上)

動態載入so模組:利用ext_skel工具編譯生成so模組,修改php.ini檔案,動態載入即可 靜態編譯:將編寫的模組靜態編譯到PHP,需要重新編譯PHP 假設要編寫一個my_dynamic擴充套件,呼叫my_dynamic函式後輸出字串“The Best

Android中外掛開發----動態載入Activity 免安裝執行程式

                一、前言又到週末了,時間過的很快,今天我們來看一下Android中外掛開發篇的最後一篇文章的內容:動態載入Activity(免安裝執行程式),在上一篇文章中說道了,如何動態載入資源(應用換膚原理解析),沒看過的同學,可以轉戰:當然,今天說道的內容還這這篇文章有關係。關於動態載入

Windows開發動態載入

前段時間寫程式碼,主程序要載入很多dll,剛開始寫的dll動態載入,好麻煩的說。老大說寫成靜態載入,理解錯了意思,改成了靜態庫,真的傻。好長時間沒寫動態庫,忘得差不多了,筆記裡也是簡單記了下。最後改成了個dll靜態載入,現在來總結一下吧。 動態庫,在Windows下為dll檔案,Linux下是so,這裡先不

關於apk加殼動態載入dex檔案

由於自己之前做了一個關於手機令牌的APK軟體,在實現的過程中儘管使用了native so進行一定的邏輯演算法保護,但是在自己逆向破解的過程中發現我的手機令牌關鍵資料能夠“輕易地”暴露出來,所以我就想進一步的對其進行加固。於是,我使用的網上常用的梆梆加固、愛加密和阿里的聚安全應用來對我的apk進行一個

XamlReader 動態載入XAML

原文: XamlReader 動態載入XAML XAML: <Grid xmlns:x="http://schemas.microsoft.com/client/2006" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/present

WPF中動態載入XAML中的控制元件

原文: WPF中動態載入XAML中的控制元件 using System; using System.Collections.Generic; using System.Linq; using System.Text;

Mybatis註解開發動態SQL通過類方法註解

之前是xml和直接在mapper方法上面寫sql,發現太麻煩了,然後上網查了一下發現個好玩的方法,就是通過類的方法來註解開發(才開始學習寫部落格,有問題煩請多擔待)後續將繼續更新,更新完畢後將取消這段說明文字 1.寫對應的動態sql的類和相應方法(這裡我因為馬虎了,踩了大半

HTML動態載入表格資料

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head>

IOS開發非同步載入網路圖片並快取本地實現瀑布流(一)

</pre><pre name="code" class="objc"></pre><pre name="code" class="objc">在前面的一篇部落格中,我寫了一個瀑布流照片牆的程式,由於之前的程式載入的圖片是本

AJAX經典應用動態載入列表框

動態載入列表框在許多場景中都需要用到。 比如說當用戶選擇了某幾項選項之後,會自動根據使用者的選擇來動態載入列表框。下面要講的就是這樣一個例子。 注意事項: 增加新的節點需要從下往上依次加進去 dynamicList.html <!DOCTYPE html> &

Mac開發如何載入XIB

在Mac開發中會遇到需要載入Xib檔案的時候,過程與iOS載入Xib檔案大同小異。下面說一下方法:新建一個工程“LoadXib”,然後新建一個Xib檔案,然後拉一些控制元件進去,如圖1:圖1這個MyXib.xib就是我們要載入的Xib,載入程式碼:- (IBAction)ju

Winphone開發BackgroupWorker

BackgroupWorker是非常簡單的非同步任務處理,算是多執行緒操作的入門級吧。 BackgroupWorker最重要的是瞭解裡面的幾個事件,下面選擇幾個來介紹下,全面的介紹還是要看MSDN。

混合開發webView載入html,android 和 html之間進行資料互動

現在混合開發比較普遍了,其實早就該學學了,只限於自己對html不是很熟,搭的介面太醜了,哈哈… 今天寫Demo的需求是這樣的 1、在一個介面裡,半面html,半面android原生控制元件。 2、點選html傳送html的資料給android ,andro

WPF:動態載入xaml物件

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Con

拆輪子動態載入DynamicLoadApk

動態載入是什麼 應用在執行的時候通過載入一些本地不存在的可執行檔案實現一些特定的功能,Android中動態載入的核心思想是動態呼叫外部的Dex檔案,極端的情況下,Android APK自身帶有的Dex檔案只是一

動態載入XAML檔案(2)

C#程式碼部分 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Co

Android開發 動態顯示和隱藏狀態列和導航欄

// //佈局填充狀態列,設定透明 // if (Build.VERSION.SDK_INT >= 21) { // View decorView = getWindow().getDecorView(); // int optio

Android開發圖片載入快取框架Picasso的領教

Picasso實現了圖片的非同步載入,並解決了Android中載入圖片時常見的一些問題,它有以下特點: 在Adapter中取消了不在檢視範圍內的ImageView的資源載入,因為可能會產生圖片錯

Android外掛化學習路(一)動態載入綜述

前段時間,公司專案完成了外掛化的開發,自己也因此學習了很多Android外掛化的知識,於是想把這些內容記錄下來,本次帶來Android外掛化的第一篇:動態載入綜述 背景知識 1.什麼是動態載入? 動態載入技術應由以下幾個部分組成: 1) 應用在執行