在Windows 8.1运行时应用中动态加载Xaml
本文关键字:动态 加载 Xaml 应用 运行时 Windows | 更新日期: 2023-09-27 18:02:47
我正在写一个windows 8.1手机运行时应用程序。我在我的资产中有一个文件,其中包含Xaml内容。当按钮被按下时,我想使Stackpanel的内容与文件中Xaml定义的一样。
我搜索了一下,发现我们可以在字符串中读取Xaml文件,并将其传递给XamlReader类,然后可以用来为StackPanel分配一个新的Xaml。我所指的方法在这里,代码也写在下面。
string xaml =
"<Ellipse Name='"EllipseAdded'" Width='"300.5'" Height='"200'"
Fill='"Red'" '"http://schemas.microsoft.com/winfx/2006/xaml/presentation'"/>";
object ellipse = XamlReader.Load(xaml);
//stackPanelRoot is the visual root of a Page in existing XAML markup already loaded by the appmodel
stackPanelRoot.Children.Add(ellipse as UIElement);
//walk the tree using XLinq result and cast back to a XAML type to set a property on it at runtime
var result = (from item in stackPanelRoot.Children
where (item is FrameworkElement)
&& ((FrameworkElement) item).Name == "EllipseAdded"
select item as FrameworkElement).FirstOrDefault();
((Ellipse) result).Fill = new SolidColorBrush(Colors.Yellow);
但是我的问题是 XamlReader类在Windows 8.1手机运行时应用程序中不可用。我使用的是Visual Studio 2013。我发现了一个名为Windows. ui . xaml的命名空间,它存在于Windows 8.1手机运行时应用程序中。
谁能告诉我如何在Windows Phone 8.1运行时加载新的Xaml的功能。
XamlReader
可在Windows Phone 8.1 Silverlight应用程序和Windows Phone 8.1商店应用程序上使用:
- 在Windows Phone 8.1的Silverlight应用程序:
System.Windows.Markup.XamlReader
- 在Windows Phone 8.1商店apps:
Windows.UI.Xaml.Markup.XamlReader