如何允许用户更改Windows应用商店的界面

时间:2015-04-18 20:22:07

标签: c# xaml windows-store-apps

考虑这个示例代码

        <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,也可以更改按钮背景颜色,

在我的源代码中我有很多网格,里面有很多画布,很多hyberlinkbuttons和滑块......等等,很多颜色,边距“这个按钮的位置”和属性和内容需要是当用户通过选择另一个界面来更改它们时更改

我尝试制作多个网格“ParentGrid1”和“ParentGrid2”然后开始更改每个网格的可见性,以及大量复制和粘贴代码“spaghetti code”,如何让用户通过点击完全更改界面具有良好编写代码的按钮??

1 个答案:

答案 0 :(得分:0)

为了说明,我修改了你的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>

在后面的代码中执行了以下操作:

    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();
    }

前两个(Type BitmapImage)用于表示不同的背景图像。第三个是用于设置Grid的Background属性的画笔。每个都在构造函数中初始化。 如果当前背景图像是第一个图像,SetBackground()方法只是切换到第二个图像,否则切换到第二个图像。