• 使用代码和未经编译的xaml创建WPF应用程序


    写xaml文件,放在对应编译后的文件夹下 windows2.xaml。

    <DockPanel  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
        <Button Name = "button_1" Margin="60" >"Click me"</Button>
    </DockPanel>

    在MainWindows.xaml 中,写带参数的构造函数。

     public partial class MainWindow : Window
        {
            private Button mybutton;
            public MainWindow()
            {
                InitializeComponent();
            }
            public MainWindow(string xmalFile)
            {
                //设置窗体
                this.Width = this.Height = 300;
                this.Left = this.Top = 100;
                this.Title = "Dynamically Loaded XAML";
    
                //// 从外部文档获取XAML的内容
                //FileStream fileStream = new FileStream(xmalFile, FileMode.Open); //文件流对象, 二参打开方式
    
                ////用xaml文件流对象 XamlReader 加载,转换为DependencyObject对象。
                ////DependencyObject是WPF空间继承的的一个基类,可以放在任何类型的容器里。
                //DependencyObject rootElement = (DependencyObject)XamlReader.Load(fileStream);
    
                DependencyObject rootElement;
                //因为流的关系,使用using语句(有开有关)
                using (FileStream fileStream = new FileStream(xmalFile, FileMode.Open))
                {
                    rootElement = (DependencyObject)XamlReader.Load(fileStream);
                }
    
                this.Content = rootElement;  //内容关联,将xaml文件显示在当前窗口
           mybutton = (Button) LogicalTreeHelper.FindLogicalNode(rootElement, "button_1");
    
                mybutton.Click += myButton_Click;//注册
    
            }
            private void myButton_Click(object sender, RoutedEventArgs e)
            {
                mybutton.Content = "Thank you.";
    
            }
    
        }

    在Program 中启动

        class Program : Application
        {
            [STAThread()]
            static void Main()
            {
                Program app = new Program();
                app.MainWindow = new MainWindow("window2.xaml");
                app.MainWindow.ShowDialog();//采用模态方法打开。
                //模态显示(showdialog)和非模态显示(show)。
                // 模态与非模态窗体的主要区别是窗体显示的时候是否可以操作其他窗体。模态窗体不允许操作其他窗体,非模态窗体可以操作其他窗体。
            }
        }
  • 相关阅读:
    [常用的Cmd运行命令]
    [Ajax三级联动 无刷新]
    [占位符 &nbsp; ]
    [String.Format(转换时间格式)]
    [ASP.NET应用到的时间处理函数]
    [SQL Server常用系统存储过程大全]
    [SQL Server创建视图时的注意点]
    [SQL Server 视图的创建- (create view必须是批处理中仅有的语句问题)]
    [SQL 高级查询运算符的用法 UNION (ALL),EXCEPT(ALL),INTERSECT(ALL) ]
    layui 表单遇到的小问题
  • 原文地址:https://www.cnblogs.com/codinghard/p/15618149.html
Copyright © 2020-2023  润新知