I have the following XAML code to create a Windows Universal App:
<Page
x:Class="CalculationQuizzer.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:CalculationQuizzer"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Image Source="ms-appx:///Images/kingscross.jpg" Opacity=".3" Stretch="Fill"></Image>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Calculation Quizzer" TextAlignment="Center" Margin="4" FontSize="16"></TextBlock>
<TextBlock Name="questionTextBlock" Text="" TextAlignment="Center" Margin="4"></TextBlock>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="4">
<TextBox Name="answerTextBox" Width="100" Margin="4" TextAlignment="Center"></TextBox>
<Button Content="Check Answer" Name="checkAnswerButton" HorizontalAlignment="Center" Margin="4" Click="checkAnswerButton_Click" ></Button>
</StackPanel>
<Button Content="Next Question" Name="getNextQuestionButton" HorizontalAlignment="Center" Margin="4" Click="getNextQuestionButton_Click" ></Button>
<TextBlock Name="resultTextBlock" Text="" TextAlignment="Center" Margin="4"></TextBlock>
</StackPanel>
<MediaElement Name="soundMediaElement"></MediaElement>
</Grid>
As you can see the Grid uses an Image called kingscross.jpg for it's background. I'm trying to make it so that the click on button Next Answer will cause Grid background to change to an Image called SKV_8915_s.jpg.
Here is a code behind the XAML:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Xaml.Media.Imaging;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
namespace CalculationQuizzer
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
IQuizObject activeQuiz;
public MainPage()
{
this.InitializeComponent();
activeQuiz = new AdditionQuizObject();
questionTextBlock.Text = activeQuiz.GetQuestion();
}
private void getNextQuestionButton_Click(object sender, RoutedEventArgs e)
{
activeQuiz.NextQuestion();
questionTextBlock.Text = activeQuiz.GetQuestion();
answerTextBox.Text = "";
resultTextBlock.Text = "";
}
private void checkAnswerButton_Click(object sender, RoutedEventArgs e)
{
if (activeQuiz.CheckAnswer(answerTextBox.Text))
{
resultTextBlock.Text = "Correct! Well done.";
Uri soundsource = new Uri("ms-appx:///Sounds/right.wav");
soundMediaElement.Source = soundsource;
soundMediaElement.Play();
}
else
{
resultTextBlock.Text = "Sorry, that is not correct.";
Uri soundsource = new Uri("ms-appx:///Sounds/wrong.wav");
soundMediaElement.Source = soundsource;
soundMediaElement.Play();
}
}
}
If some of you guys could tell me which code do I need to plug into event handler for CheckAnswerButton_Click so that it changes the background of the Grid, to SKV_8915_s.jpg, that would be super amazing!
For your requirement, you could set
ImageBrushfor the Background property for Grid ,then bind theImageSourcewith bool property like the follow. And use the converter to pass different image for each bool type.Code Behind
And I have post the code sample to github that you could refe.