如何制作可以在Main Page C#代码中初始化的页面模板?

时间:2019-07-09 17:00:38

标签: c# uwp

我想在我的UWP项目中创建一个页面模板,该模板可以在C#代码的主页中进行初始化。

例如,页面就像是绘画作品的介绍:绘画图片(可以是表示图像的url),下面是文字介绍。我需要在主页中初始化这两个元素,并使用C#代码动态创建新页面。因为对于每幅绘画作品,我都需要使用一个新页面进行导航和跟踪。

该怎么做?谢谢!

1 个答案:

答案 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显示所有图像。当您单击其中之一时,请使用此原理跳至预先设计的页面。

希望这对您有所帮助。