使用C#代码和未经编译的XAML创建WPF应用程序

  1. 新建一个WPF项目,将App.Xaml和MainWindow.xaml删除

  2. 未经编译的XAML文件内容如下

    <DockPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
        <Button Name="Button1" Margin="60">Please Click Me!</Button>
    </DockPanel>
    
    
  3. C#代码如下

    using System.IO;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Markup;
    
    namespace 项目7 {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            private Button btn;
            public MainWindow()
            {
                InitializeComponent();
            }
    
            public MainWindow(string xamlFile)
            {
                //设置窗体
                this.Width = 800;
                Height = 450;
                Left = Top = 150;
                Title = "Dynamically Loaded XAML";
                //从外部文件获取XAML的内容
                DependencyObject rootElement;
                using (FileStream fs = new FileStream(xamlFile, FileMode.Open))
                {
                    rootElement = XamlReader.Load(fs) as DependencyObject;
                }
    
                Content = rootElement;
                btn = LogicalTreeHelper.FindLogicalNode(rootElement, "Button1") as Button;
                btn.Click += btn_Click;
            }
    
            void btn_Click(object sender, RoutedEventArgs e)
            {
                btn.Content = "Thank you!";
            }
        }
    }
    
  4. 再新建个Program.cs类,作为启动程序:

    using System;
    using System.Windows;
    
    namespace 项目7 {
        class Program:Application {
            [STAThread]
            static void Main()
            {
                Program app=new Program();
                app.MainWindow=new MainWindow("Window1.xaml");
                app.MainWindow.ShowDialog();
            }
        }
    }
    

c3d.club

c3d.club