wpf學習20180606
對象元素的子元素
有三類子元素:內容屬性、集合項、值(類型轉換)
-----------------------------------------------------------------------------
內容屬性
元素對象有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