我想在我的UWP项目中创建一个页面模板,该模板可以在C#代码的主页中进行初始化。
例如,页面就像是绘画作品的介绍:绘画图片(可以是表示图像的url),下面是文字介绍。我需要在主页中初始化这两个元素,并使用C#代码动态创建新页面。因为对于每幅绘画作品,我都需要使用一个新页面进行导航和跟踪。
该怎么做?谢谢!
答案 0 :(得分:2)
我想在UWP项目中创建一个页面模板,可以在C#代码的主页中对其进行初始化。
根据您的要求,可以创建包含ImageModel类的ImagePage,如下所示。当页面导航到图像和文本标签时,将使用来自主页的参数进行初始化。
Xaml
<StackPanel>
<Image Name="MyImage"/>
<TextBlock Name="MyDescription"/>
</StackPanel>
隐藏代码
public sealed partial class ImagePage : Page
{
public ImagePage()
{
this.InitializeComponent();
}
public class ImageModel
{
public string ImageUrl { get; set; }
public string Description { get; set; }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (e.Parameter != null && e.Parameter is ImageModel)
{
var data = e.Parameter as ImageModel;
MyImage.Source = new BitmapImage(new Uri(data.ImageUrl));
MyDescription.Text = data.Description;
}
}
}
然后在“主页”上添加用于导航的框架。
<Grid>
<Frame Name="ImageFrame"/>
</Grid>
用法
public MainPage()
{
this.InitializeComponent();
var TestData=new ImageModel
{
ImageUrl = "https://via.placeholder.com/150",
Description = "This is a test image"
}
ImageFrame.Navigate( typeof(ImagePage), TestData );
}
现在,当您启动应用程序时,新图像页面将加载到框架中。
这是一个简短的示例,主要目的是表示如何跳转到页面并为页面提供参数。
页面收到参数后,您可以根据参数调整用户界面。
因此,您可以使用GridView显示所有图像。当您单击其中之一时,请使用此原理跳至预先设计的页面。
希望这对您有所帮助。