zoukankan      html  css  js  c++  java
  • 使用代码和未经编译的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)。
                // 模态与非模态窗体的主要区别是窗体显示的时候是否可以操作其他窗体。模态窗体不允许操作其他窗体,非模态窗体可以操作其他窗体。
            }
        }
  • 相关阅读:
    Install the Maven in your computer
    《李嘉诚全传》--孙良珠
    Crystal Reports 2008(水晶报表) 第一个报表
    《唤醒心中的巨人》--[美]安东尼·罗宾
    《写给女人》--[美]桃乐丝·卡耐基
    Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
    Crystal Reports 2008(水晶报表) 启动时检查更新
    Crystal Reports 2008(水晶报表) 安装
    《百年孤独》--[哥伦比亚]加夫列尔·加西亚·马尔克斯
    《自己拯救自己》--[英]塞缪尔·斯迈尔斯
  • 原文地址:https://www.cnblogs.com/codinghard/p/15618149.html
Copyright © 2011-2022 走看看