在 Windows Phone 中以编程方式添加 XAML
Add XAML programmatically in Windows Phone
我需要以编程方式添加一些 UI。
为了做到这一点,我创建了每个对象并将其添加到我的主网格中。
这样(我需要在 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 文件的 Build Action 设置为 Content,如果您将其用作资源。您也可以直接将带有 XAML 代码的字符串传递给 XamlReader.Load
函数。
我需要以编程方式添加一些 UI。
为了做到这一点,我创建了每个对象并将其添加到我的主网格中。
这样(我需要在 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 文件的 Build Action 设置为 Content,如果您将其用作资源。您也可以直接将带有 XAML 代码的字符串传递给 XamlReader.Load
函数。