在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的功能。

在Windows 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