在后台代码中引入XAML的方法

load XAML

本文将介绍三种方法用于在后台代码中动态加载XAML,其中有两种方法是加载已存在的XAML文件,一种方法是将包含XAML代码的字符串转换为WPF的对象。

这些是我在编写RegeX时获得的经验,它们将会给WPF程序带来更多的灵活性。

一、在资源字典中载入项目内嵌资源中的XAML文件

Application.Current.Resources.MergedDictionaries.Insert(0,Application.LoadComponent(new Uri("abc/Index.xaml",UriKind.Relative)) as ResourceDictionary);

此方法仅限于载入项目中包含的XAML资源文件,测试中载入项目以外的资源会提示找不到文件。

二、在资源字典中载入外部XAML文件

Application.Current.Resources.MergedDictionaries.Insert(0,XamlReader.Load(new FileStream("C:\\index.xaml", FileMode.Open)) asResourceDictionary);

此方法适用于载入项目以外的XAML资源文件。

三、将XAML形式的字符串转换为对象

XamlReader.Parse(@"Hi!")as FlowDocument

此方法将生成一个流文档对象,在RegeX中我就是通过这种方法来灵活的控制流文档内容,以生成处理结果。

需注意的是,此方法需要.Net 3.5 SP1支持,此前好像是使用的Load方法的重载。

 

动态加载XAML文件技术非常适合用于资源载入,以此来实现语言切换、主题变换等功能。

动态转换 XAML 字符串为 WPF 对象技术可为程序提供更为灵活的对象生成方式,这在一些复杂的情况下尤为实用。


下载本文的PDF版本:http://www.box.net/shared/y2ajdmgrvl

fj.png10474909_200809300511391.jpg

fj.png10474909_200809300512171.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10474909/viewspace-466204/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10474909/viewspace-466204/

WPF(Windows Presentation Foundation)应用程序,要在任务栏托盘显示图标,通常需要使用NotifyIcon控件,该控件是在.NET FrameworkSystem.Windows.Forms程序集定义的。因此,如果需要在使用XAML的WPF应用实现这一功能,你需要进行以下步骤: 1. 添加对System.Windows.Forms程序集的引用,以便可以使用NotifyIcon控件。 2. 在WPF项目的代码后台(例如`MainWindow.xaml.cs`)引入System.Windows.Forms命名空间。 3. 创建NotifyIcon实例,并设置其属性,比如Icon,用于显示在任务栏托盘。 4. 处理NotifyIcon的事件,比如点击事件,以便可以双击托盘图标时执行特定操作(如恢复窗口)。 5. 将NotifyIcon实例添加到窗体的Components集合,确保正确处理资源清理。 以下是一个简单的示例代码: ```csharp using System; using System.Drawing; using System.Windows.Forms; using System.Windows; using System.Windows.Forms.Integration; // 在代码后台引入命名空间 using System.Windows.Forms.Integration; public partial class MainWindow : Window { private NotifyIcon notifyIcon; public MainWindow() { InitializeComponent(); InitializeNotifyIcon(); } private void InitializeNotifyIcon() { // 实例化NotifyIcon并设置属性 notifyIcon = new NotifyIcon(); notifyIcon.Icon = new System.Drawing.Icon("path_to_icon.ico"); // 设置托盘图标 notifyIcon.Visible = true; // 双击托盘图标时恢复窗体 notifyIcon.DoubleClick += (sender, e) => { this.Show(); this.WindowState = WindowState.Normal; }; // 添加到窗体的Components集合 this.Components.Add(notifyIcon); } } ``` 请注意,从.NET Core 3.0开始,WPF项目默认可能不再引用System.Windows.Forms命名空间,因此你可能需要在项目文件手动添加对该程序集的引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值