WPF后台如何获得前台XAML中对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF后台如何获得前台XAML中对象相关的知识,希望对你有一定的参考价值。

我想通过一个BUTTON_Click事件来加载一个UserControl到主窗体中来 小弟才学,所以能想到的方法就是这个,只是不知道如何才能在WPF后台获得前台XAML中对象,如果能获得对象,相应的方法应该就有了吧,我想是....
不吝赐教

首先确认你在项目中引用了UserControl对象(假设叫UC)所在的DLL,并调用了正确的命名空间。
然后在窗体的类内定义UserControl的对象
UC uc;
在构造窗体时先不要实例化它

最后在Onclick事件内添加
uc = new UC();
Content = uc;
这样这个控件就成为窗体的内容了。

估计LZ可能是没有正确引用那个控件。

路过的……
参考技术A 你在你的前台要显示UserControl的地方加一个这个控件<ContentControl Name="DisplayView" Margin="5" ></ContentControl>
然后在BUTTON_Click事件里面加一句话:
this.DisplayView.Content = new UserControl的名字();

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

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

本文将介绍三种方法用于在后台代码中动态加载XAML,其中有两种方法是加载已存在的XAML文件,一种方法是将包含XAML代码的字符串转换为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)) as ResourceDictionary);

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

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

XamlReader.Parse(@"<FlowDocument xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""><Paragraph><Run>Hi!</Run></Paragraph></FlowDocument>") as FlowDocument

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

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

 

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

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

以上是关于WPF后台如何获得前台XAML中对象的主要内容,如果未能解决你的问题,请参考以下文章

WPF中关于对前台Xaml中Triggers的一些重要思考。

XAML与C#与WPF三者到底有啥关系?

wpf 中 RadioButton 如何切换

C# WPF从后台代码生成行列可变的表格

C# WPF从后台代码生成行列可变的表格

C# WPF后台动态添加控件(经典)