1. 程式人生 > >WPF:動態載入xaml物件

WPF:動態載入xaml物件

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.IO;

using System.Xml;

using System.Windows.Markup;



/*

 * 功能:測試WPF中動態載入XAML中的控制元件

 *       並加到指定的子節點中。

 * 作者:Kagula

 * 時間:2012-09-20

 * 環境:VS2008 .NET FRAMEWORK 3.5 

 * 參考資料:[1]《Application=Code+Markup 讀書筆記 19》

 *               http://space.itpub.net/15123181/viewspace-423015

 *           [2]《Pack URIs in Windows Presentation Foundation》

 *               http://technet.microsoft.com/en-US/library/aa970069(v=vs.90)

 */

namespace testXAMLLoad

{

    /// <summary>

    /// Interaction logic for Window1.xaml

    /// </summary>

    public partial class Window1 : Window

    {

        public Window1()

        {

            InitializeComponent();



            //LoadEmbeddedXaml();

            //LoadEmbeddedXaml2();

            LoadEmbeddedXaml3();

        }



        //從字串中載入

        public void LoadEmbeddedXaml() 

        { 

            Title = "Load Embedded Xaml";

            string strXaml = "<Button xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'" + 

                " Foreground='LightSeaGreen' FontSize='16pt' Width='128' Height='32'>" + 

                " From String Object!</Button>"; 

            StringReader strreader = new  StringReader(strXaml); 

            XmlTextReader xmlreader = new  XmlTextReader(strreader);

            object obj = XamlReader.Load(xmlreader);

            grid1.Children.Add((UIElement)obj);

        }



        //從外部檔案中載入 Button控制元件

        public void LoadEmbeddedXaml2()

        {

            XmlTextReader xmlreader = new XmlTextReader("d:\\a.xaml");

            UIElement obj = XamlReader.Load(xmlreader) as UIElement;

            grid1.Children.Add((UIElement)obj);

        }



        //從資原始檔中載入

        public void LoadEmbeddedXaml3()

        {

            //Build Action = Resource,Do not Copy,無相應cs檔案

            Uri uri = new Uri("/LoadXamlResource.xaml",UriKind.Relative);

            Stream stream =Application.GetResourceStream(uri).Stream;

            //FrameworkElement繼承自UIElement

            FrameworkElement obj =XamlReader.Load(stream) as FrameworkElement;

            grid1.Children.Add(obj);

        }

    } 

}
//建立檔案,讀取3.xaml檔案的內容
static FileStream fs = new FileStream("3.xaml", FileMode.Open, FileAccess.Read); 
/* 呼叫XamlReader的//Load方法,從上面的檔案流中建立3D物件,
 * 由於3.xaml的根節點是ViewPort3D,所以這裡建立的是ViewPort3D
 */
Viewport3D vp2 = (Viewport3D)System.Windows.Markup.XamlReader.Load(fs);  
 //建立一個新視窗
Window anew=new Window(); 
//將新視窗的Content屬性設為vp2,型別為ViewPort3D
anew.Content=vp2;     
/*
some code of window property
*/
anew.show();    //顯示新視窗


相關推薦

WPF:動態載入xaml物件

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

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

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

XamlReader 動態載入XAML

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

Winphone開發之動態載入XAML

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

動態載入XAML檔案(2)

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

WPF:動態載入控制元件並設定樣式

這個問題想了一下午,網上查找了一些資料。終於解決了。拿出來晒一下,希望能夠幫助到你們。 下面這個例子是動態新增的TextBlock控制元件,面板是StackPanel,如下: TextBlock tb = (TextBlock)XamlToObj("<TextBl

jquery監聽動態載入物件的click方法

$(document).on('click','.swiper-btn',function(){ $('.swiper-current').attr('class','swiper-btn s

WPF中Style檔案的引用——使用xaml程式碼或者C#程式碼動態載入

  WPF中控制元件擁有很多依賴屬性(Dependency Property),我們可以通過編寫自定義Style檔案來控制控制元件的外觀和行為,如同CSS程式碼一般。   總結一下WPF中Style樣式的引用方法:   一、內聯樣式   直接在控制元件

動態載入Dll時,通過Type生成類物件

原文: 動態載入Dll時,通過Type生成類物件 轉:http://www.cnblogs.com/zfanlong1314/p/4197383.html “反射”其實就是利用程式集的元資料資訊。 反射可以有很多方法,編寫程式時請先匯入 System.Reflection 名稱空間。

WPF動態載入資料

<!--動態生成一組按鈕--> <StackPanel> <ItemsControl ItemsSource="{Binding Picture}">

Unity3D-動態讀取配置檔案,載入遊戲物件

private Dictionary<int,T> LoadConfig<T>(string fileName) where T : class,new() {

WPF 後臺動態載入UserControl的一種方法

  今天在看以前的專案時看到前輩們在後臺載入UserControl的一種方法:1.在前臺建一個Contentcontrol,Name="ctr1"。2.寫一個函式,如下:public Object CreatUsercontrol(){    string ctrName=

動態載入類並例項化物件

一、Class.forName("").newInstance();用於工廠真的是挺好的 1. Class.forName( )靜態方法的目的是為了動態載入類(初始化類)。在載入完成後,一般還要呼叫Class下的newInstance( )靜態方法來例項化物件以便操作。因此

Android中apk動態載入技術研究(2)android插件化及實現

name creat package path iss fontsize 調用 dex con 了解了android中類載入的前期知識點後,來看看android中DexClassLoader詳細的實現 詳細載入流程例如以下: 宿主程序會到文件系統比

查看WPF 應用程序XAML結構DOM樹

pla soft spec 代碼 ant es2017 ext 設置斷點 ins 當我們看到一些設計新穎的網站時,可以借助瀏覽器自帶的Inspector 工具或插件方便的瀏覽網站布局結構及邏輯。如果是WPF 應用程序能否看到控件的架構方式呢?本篇將介紹兩款工具Snoop 和

喜羊羊系列之【設備-驅動 動態載入進內核】

popu error 驅動 abi free -s map .net obj 博客:http://blog.csdn.net/muyang_ren 這篇和設備驅動編

動態載入DLL所需要的三個函數詳解(LoadLibrary,GetProcAddress,FreeLibrary)

包含 設計 應用程序 執行文件 lib 通過 不同的 將不 width 動態載入 DLL動態載入方式是指在編譯之前並不知道將會調用哪些 DLL 函數, 完全是在運行過程中根據需要決定應調用哪些函數。方法是:用 LoadLibrary 函數加載動態鏈接庫到內存,用 GetPr

ajax 動態載入html後不能執行其中的js解決方法

cti 寫入 match IT 通過 如果 frame tro 其他 事件背景 有一個公用頁面需要在多個頁面調用,其中涉及到部分js已經寫在了公用頁面中,通過ajax加載該頁面後無法執行其中的js。 解決思路 1. 采用附加一個iframe的方法去執行js,為我等代碼潔癖者

WPF 動態模擬CPU 使用率曲線圖

cap handle ati images row sage 動態演示 導入 ane 原文:WPF 動態模擬CPU 使用率曲線圖     在工作中經常會遇到需要將一組數據繪制成曲線圖的情況,最簡單的方法是將數據導入Excel,然後使用

劍走偏鋒,JavaScript指令碼動態載入DLL

目前網上公佈通過JavaScript等指令碼載入DLL動態連結庫的方法有2種,一種是利用Excel.Applicationobject's RegisterXLL()進行DLL載入,另一種是James Forshaw開源的工具DotNetToJScript,這2種方式都非常巧妙,但是也存在一定的