【问题标题】:How to allow user change interface of Windows store application如何允许用户更改 Windows 商店应用程序的界面
【发布时间】:2015-04-18 20:22:06
【问题描述】:

考虑这个示例代码

        <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,请同时更改按钮背景颜色,

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

我尝试制作多个网格“ParentGrid1”和“ParentGrid2”然后开始更改每个网格的可见性,以及大量复制和粘贴代码“意大利面条代码”,我怎样才能让用户通过单击完全更改界面按钮写得好??

【问题讨论】:

    标签: c# xaml windows-store-apps


    【解决方案1】:

    为了说明,我修改了你的 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() 方法简单地切换到第二张图像,否则切换到第二张。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-15
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      相关资源
      最近更新 更多