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)。
                // 模态与非模态窗体的主要区别是窗体显示的时候是否可以操作其他窗体。模态窗体不允许操作其他窗体,非模态窗体可以操作其他窗体。
            }
        }
  • 相关阅读:
    R语言对苏格兰独立民意调查的Meta分析
    R语言中固定与随机效应Meta分析
    Comet OJ
    luoguP6070 [MdOI2020] Decrease 贪心+二维差分
    luoguP6071 [MdOI2020] Treequery DFS序+主席树
    AT2064 [AGC005F] Many Easy Problems 容斥+NTT
    BZOJ 4650: [Noi2016]优秀的拆分 后缀自动机+启发式合并+线段树合并
    BZOJ 1498: [NOI2006]神奇的口袋 性质分析+高精度
    BZOJ 1819: [JSOI]Word Query电子字典 搜索+trie
    robotframework 随机选中下拉框中的值
  • 原文地址:https://www.cnblogs.com/codinghard/p/15618149.html
Copyright © 2011-2022 走看看