C# 如何允许用户更改Windows应用商店应用程序的界面
考虑这个示例代码C# 如何允许用户更改Windows应用商店应用程序的界面,c#,xaml,windows-store-apps,C#,Xaml,Windows Store Apps,考虑这个示例代码 <Grid Name="MyParentGrid"> <Grid.Background> <ImageBrush ImageSource="Test.jpg"/> </Grid.Background> <HyperlinkButton Name="Play" Click="Play_Click" Background="Bla
<Grid Name="MyParentGrid">
<Grid.Background>
<ImageBrush ImageSource="Test.jpg"/>
</Grid.Background>
<HyperlinkButton Name="Play" Click="Play_Click" Background="Black"/>
<HyperlinkButton Name="Personalize"Click="Personalize_Click" Background="Black"/>
<HyperlinkButton Name="LeaderBoard" Click="LeaderBoard_Click" Background="Black"/>
</Grid>
我现在只有三个按钮在一个格子里,背景是一张照片
现在,如果我想让用户在单击按钮时查看另一个背景而不是Test.jpg,还可以更改按钮的背景颜色
在我的源代码中,我有很多网格,里面有很多画布,还有很多HyberLink按钮和滑块。。。等等,当用户通过选择另一个界面进行更改时,需要更改此按钮的许多颜色、边距、位置以及属性和内容
我尝试创建多个网格ParentGrid1和ParentGrid2,然后开始更改每个网格的可见性,以及大量复制和粘贴代码意大利面代码,我如何允许用户通过单击具有良好编写代码的按钮来完全更改界面???为了说明,我修改了您的xaml:
<Grid Name="MyParentGrid">
<Grid.Background>
<ImageBrush ImageSource="ms-appx:///Assets/Test.jpg"/>
</Grid.Background>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<HyperlinkButton Name="Play" Click="Play_Click" Background="Black" Content="Play"/>
<HyperlinkButton Name="Personalize" Click="Personalize_Click" Background="Black" Content="Personalize"/>
<HyperlinkButton Name="LeaderBoard" Click="LeaderBoard_Click" Background="Black" Content="Leaderboard"/>
</StackPanel>
</Grid>
前两种类型的位图图像用于表示不同的背景图像。第三个是笔刷,用于设置网格的背景属性。每个都在构造函数中初始化。
如果当前背景图像是第一个图像,则SetBackground方法仅切换到第二个图像,否则切换到第二个图像
private static BitmapImage first;
private static BitmapImage second;
private static ImageBrush backBrush;
public MainPage()
{
this.InitializeComponent();
first = new BitmapImage(new Uri("ms-appx:///Assets/Test.jpg"));
second = new BitmapImage(new Uri("ms-appx:///Assets/NewBackground.jpg"));
backBrush = new ImageBrush();
SetBackground();
}
private void SetBackground()
{
if(backBrush.ImageSource == first)
{
backBrush.ImageSource = second;
}
else
{
backBrush.ImageSource = first;
}
MyParentGrid.Background = backBrush;
}
private void Personalize_Click(object sender, RoutedEventArgs e)
{
SetBackground();
}