婚纱网站布局ppt怎么做,网页制作图片代码,门户网站的发布特点,网站建设方案 百度文库这一节我们来简单介绍一下XAML的加载和编译#xff0c;它包括如下三种方式#xff1a; 只使用代码 使用代码和未编译的XAML 使用代码和编译过的BAML 一. 只使用代码 我们首先创建一个简单的控制台应用程序。然后我们添加PresentationFramework.dll、PresentationCore.dll、…这一节我们来简单介绍一下XAML的加载和编译它包括如下三种方式 · 只使用代码 · 使用代码和未编译的XAML · 使用代码和编译过的BAML 一. 只使用代码 我们首先创建一个简单的控制台应用程序。然后我们添加PresentationFramework.dll、PresentationCore.dll、WindowsBase.dll和System.Xaml.dll。 然后我们创建一个Window1.cs类文件 public class Window1 : Window{private Button _button;public Window1(){InitializeComponent();}private void InitializeComponent(){Width 400;Height 300;Title Code-Only Window;_button new Button {Content Clike Me, Margin new Thickness(5)};_button.Click (s, e) MessageBox.Show(Code Only);var stackPanel new StackPanel();IAddChild container stackPanel;container.AddChild(_button);container this;container.AddChild(stackPanel);}} 然后给Program.cs的Main方法添加[STAThread]特性因为UI components需要当前线程是STA的。 [STAThread]
private static void Main()
{var window1 new Window1();window1.ShowDialog();//这是模态窗口的调用方法会阻塞当前线程我们关闭它下面的才会输出Console.WriteLine(Window1 Closed);
} 这样我们一个简单的只使用代码的WPF程序就能完全运行了。 二. 使用代码和未编译的XAML 我们在WPF应用程序中创建一个Window1.xaml文件然后删除掉他的代码隐藏文件Window1.xaml.cs并且把XAML文档的内容替换为 StackPanel xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentation Margin5Button NameButtonClick Me/Button
/StackPanel 然后修改该文件的属性Build Action设置为None把Copy to Output Directory设置为Copy always。这样就可以保证Window1.xaml文件位于可执行的应用程序文件夹中。 最后在MainWindow的后台代码中编写加载代码 /// summary/// Interaction logic for MainWindow.xaml/// /summarypublic partial class MainWindow : Window{/// summary/// /// /summarypublic MainWindow(){InitializeComponent();ReadFromXaml();}private void ReadFromXaml(){DependencyObject rootElement;using (var fs new FileStream(Window1.xaml, FileMode.Open, FileAccess.Read)){rootElement (DependencyObject) XamlReader.Load(fs);}this.Content rootElement;//var frameworkElement (FrameworkElement) rootElement;//var button (Button) frameworkElement.FindName(Button);var button (Button) LogicalTreeHelper.FindLogicalNode(rootElement, Button);if (button ! null) button.Click (s, e) MessageBox.Show(Dynamically Loaded XAML);}} 我们可以使用2种方式查找控件对象。这种松散的加载方式比较方便但是先将XAML编译成BAML然后在运行时加载BAML比直接加载XAML效率要高。 三. 使用代码和编译过的BAML 这种方式是推荐的方式也是我们平时经常用到的方式。它具有如下的优点 · 有些内容可以自动生成。不需要在使用LogicalTreeHelper等方式查找控件 · 在运行时读取BAML要比直接读取XAML快 · 部署更简单因为BAML文件嵌入到程序集中不会丢失 我们只需要了解一下平时我们使用Visual Studio工具编译WPF应用程序的时候。会首先把XAML文件编译成BAML。我们查看WPF应用程序的\obj\Debug目录就会发现一个MainWindow.baml的临时文件。同时使用选择的程序语言创建一个部分类也存在于\obj\Debug目录下名为MainWindow.g.i.csC#语言。该文件包括该窗口包含的控件字段。从程序集加载和构建控件树的方法。将控件对象指定到各个字段以连接所有事件处理程序的代码。 转载于:https://www.cnblogs.com/Mind-Hacker/p/3477026.html