c# - 在 Windows Phone 中以编程方式添加 XAML

标签 c# xaml windows-phone-8.1

我需要以编程方式添加一些用户界面。

为了做到这一点,我创建每个单个对象并将其添加到我的主网格中。

这样(我需要在 lambda 函数中做到这一点):

        Deployment.Current.Dispatcher.BeginInvoke(() => {
            StackPanel stkpanel = new StackPanel();
            stkpanel.Orientation = Orientation.Horizontal;
             TextBlock textBlock = new TextBlock();
            textBlock.Text = "text1";
            Grid myGrid = new Grid();
            myGrid.Children.Add(textBlock);

            MainPage currentPage = (MainPage)(((App)Application.Current).RootFrame.Content as PhoneApplicationPage);
            currentPage.LayoutRoot.Children.Add(myGrid);
 ...
});

有没有办法向我的 MainPage.xaml 添加另一个 File.xaml 并显示结果?

我使用的是silverlight 8.1

谢谢

最佳答案

有一些不同的方法可以做到这一点。

用户控件

一种方法是创建一个用户控件并直接在 XAML 中使用它,或者像标准控件一样在后面的代码中实例化它。您可以在 Visual Studio 的“添加项目”对话框中找到模板。

页面

还可以创建第二个页面并将其显示在 Frame 标记中。这在 XAML 和代码隐藏中是可能的。这是一个例子:

<Frame Margin="0,148,0,0" Name="myFrame"/>

myFrame.Navigate(typeof(BlankPage1));

XamlReader

如果您有部分 XAML 代码,存储在文件中,您可以手动解析它并将对象添加到页面。您的 XAML 必须类似于以下内容,并带有 xmlns 属性

<StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <Button Content="BTN 1" />
    <Button Content="BTN 2" />
    <Button Content="BTN 3" />
</StackPanel>

然后你可以使用XamlReader解析它:

var uri = new Uri("ms-appx:///test.xaml");
var file = await StorageFile.GetFileFromApplicationUriAsync(uri);

var panel = XamlReader.Load(await FileIO.ReadTextAsync(file)) as StackPanel;
root.Children.Add(panel);

如果您要将 XAML 文件用作资源,请务必将其构建操作设置为内容。您还可以直接将带有 XAML 代码的字符串传递给 XamlReader.Load 函数。

关于c# - 在 Windows Phone 中以编程方式添加 XAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29753042/

相关文章:

c# - WPF XAML 中的“无法创建”错误的实例

c# - 一般来说,如何修复禁用的 ASP.NET 控件的不安全性?

c# - 使用 HierarchialdataTemplate 具有多个级别的 WPF TreeView

c# - 附加到 VARCHAR 的大小度量是什么?

c# - 使用 C# 将单个 Int 从一个用户控件传递到另一个用户控件

xaml - 为什么任务栏中的应用程序图标在 Windows 10 中不透明?

c# - WPF Metro 窗口全屏

xaml - 使用 MVVM 在 XAML 中让 ViewModel 知道用户何时滚动到 ListView 的末尾

c# - WP8.1 BackgroundMediaPlayer 问题 : Send messages with data between Foreground and Background

c++ - 如何在 Windows Phone 上使用 c++/cx 获得加密安全随机性?