1. 程式人生 > >wpf學習20180606

wpf學習20180606

文本 普通 子集 markup TE child pen ldr xmla

對象元素的子元素

有三類子元素:內容屬性、集合項、值(類型轉換)

-----------------------------------------------------------------------------

內容屬性

元素對象有Content或Items屬性的,這就是內容屬性,可以包含元素對象或文本。

集合項

兩種類型的集合:List、Dictionary

類型轉換

普通文本作為元素的子元素。

---------------------------------------------------------------------------

xaml元素必須有默認構造函數

-------------------------------------------------------------------------------------------------

運行時加載和解析XAML

使用代碼解析加載XAML文件

XamlReader對象

如果項目根目錄有個Win.xaml的文件,用代碼解析載入並顯示。

Window win = null;

using(FileStream fs = new FileStream ("Win.xaml", FileMode.Open, FileAccess.Read))

{

  win = (Window)XamlRead.Load(fs);

  win.show();

}

註意事項:FileStream的命名空間System.IO;XamlRead的命名空間System.Windows.Markup;

使用文件流,需要讀取物理文件,所以Win.xaml需要調整設置,復制到輸出目錄:始終復制;生成操作:無。

這些設置在頁面的屬性設置中。同時要刪除頁面的後置代碼文件。Win.xaml要刪除xmlans=class""的設置。+

win.xaml的xmal代碼

<Window>

  <StackPanel>

    <Button>

      ......

    <Button>

    .......

......

</Window>

如何找到第二個按鈕並給按鈕設置文本

win = (Window)XamlRead.Load(fs);

StackPanel sp = (StackPanel)win.Content;

Button btn = sp.Children[1];

btn.Content="找到";

這是根據子集的個數順序硬編碼找對象,有更簡單的方法嗎?有

----------------------------------------------------------------------------------------

Xaml元素命名

<Window>

  <StackPanel>

    <Button>

      ......

    <Button X:Name="btn1">

    .......

......

</Window>

win = (Window)XamlRead.Load(fs);

Button btn = (Button)win.FindName("btn1");

btn.Content="找到";

wpf學習20180606