很久沒寫Blogs了,如今在看【WPF編程寶典】,決定開始從新寫博客,和你們一塊兒分享技術。 編程
在編程時咱們常但願界面是動態的,能夠隨時變換而不須要從新編譯本身的代碼。 ide
如下是動態加載XAML的一個事例代碼。 spa
在debug文件夾下新建一個文本文件,重命名爲:file.xaml debug
插入界面代碼: xml
<DockPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 博客 <Button Name="button1" Margin="30" Content="Pleas click me."></Button> string </DockPanel>it |
在VS新建LoadXAML.CS類。 io
public class LoadXAML :Window 編譯 { private Button button1;
public LoadXAML(string xamlFile) { Width = Height = 285; Left = Top = 100; Title = "動態加載XAML";
DependencyObject rootElement; using (FileStream fs=new FileStream(xamlFile, FileMode.Open)) { rootElement =(DependencyObject) XamlReader.Load(fs);
} Content = rootElement; //查找控件(方法一) //button1 = (Button) LogicalTreeHelper.FindLogicalNode(rootElement, "button1");
//查找控件(方法二) FrameworkElement frameworkElement = (FrameworkElement) rootElement; button1 = (Button) frameworkElement.FindName("button1");
button1.Click += button1_Click; }
void button1_Click(object sender, RoutedEventArgs e) { button1.Content = "Thank you."; } |
修改App.xaml啓動項
protected override void OnStartup(StartupEventArgs e) { var win = new LoadXAML("file.xaml"); win.Show(); } |