Menu > Project > Add new item > Visual C# > Content Dialog

We delete the following default ContentDialog options to remove them:

PrimaryButtonText=
SecondaryButtonText=
PrimaryButtonClick=
SecondaryButtonClick=

The xaml code
<ContentDialog
    x:Class="ecu_winiot.MenuPopup"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:ecu_winiot"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    x:Name="DialogBox"
    Title="Menu">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Margin="0,20" >
        <Grid.RowDefinitions>
            <RowDefinition Height="1*" />
            <RowDefinition Height="80" />
            <RowDefinition Height="80" />
            <RowDefinition Height="80" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        <TextBlock Grid.ColumnSpan="2" Text="Select Option" Margin="5" />
        <Button Grid.Row="1" Grid.Column="0" Content="Item 1" x:Name="ButtonMenuItem1" Click="ButtonMenuItem_Click" Margin="5,0" Width="100" HorizontalAlignment="Center" />
        <Button Grid.Row="1" Grid.Column="1" Content="Item 2" x:Name="ButtonMenuItem2" Click="ButtonMenuItem_Click" Margin="5,0" Width="100" HorizontalAlignment="Center" />
        <Button Grid.Row="2" Grid.Column="0" Content="Item 3" x:Name="ButtonMenuItem3" Click="ButtonMenuItem_Click" Margin="5,0" Width="100" HorizontalAlignment="Center" />
        <Button Grid.Row="2" Grid.Column="1" Content="Item 4" x:Name="ButtonMenuItem4" Click="ButtonMenuItem_Click" Margin="5,0" Width="100" HorizontalAlignment="Center" />
        <Button Grid.Row="3" Grid.Column="1" Content="Cancel" x:Name="ButtonCancel" Click="ButtonMenuItem_Click" Margin="5,0" Width="100" HorizontalAlignment="Center" />
    </Grid>
</ContentDialog>
The xmal.cs code
    public sealed partial class MenuPopup : ContentDialog
    {
		//--------------------------
		//----- PUBLIC DEFINES -----
		//--------------------------
        public enum DialogResult
        {
            MenuItem1,
            MenuItem2,
            MenuItem3,
            MenuItem4,
            Cancel,
            Unknown
        }

		//---------------------------
		//----- PRIVATE DEFINES -----
		//---------------------------
		//private 

		//--------------------------
		//----- PUBLIC OBJECTS -----
		//--------------------------
		public DialogResult Result;

		//---------------------------
		//----- PRIVATE OBJECTS -----
		//---------------------------
		//private 


		//*********************************
		//*********************************
		//********** CONSTRUCTOR **********
		//*********************************
		//*********************************
        public MenuPopup()
        {
            this.InitializeComponent();
            this.Result = DialogResult.Unknown;
        }

		//************************************
		//************************************
		//********** BUTTON PRESSED **********
		//************************************
		//************************************
		private void ButtonMenuItem_Click(object sender, RoutedEventArgs e)
		{
			var ClickedButton = sender as Button;
			switch (ClickedButton.Name)
			{
			case "ButtonMenuItem1":
				this.Result = DialogResult.MenuItem1;
				break;
			case "ButtonMenuItem2":
				this.Result = DialogResult.MenuItem2;
				break;
			case "ButtonMenuItem3":
				this.Result = DialogResult.MenuItem3;
				break;
			case "ButtonMenuItem4":
				this.Result = DialogResult.MenuItem4;
				break;
			case "ButtonCancel":
				this.Result = DialogResult.Cancel;
				break;
			}
            
			//CLOSE DIALOG BOX
			DialogBox.Hide();
		}
	}
Using the dialog box

Note – make the _Click method “private async” as it will be doing an async call

    //*********************************
    //*********************************
    //********** MENU BUTTON **********
    //*********************************
    //*********************************
    private async void ButtonMenu_Click(object sender, RoutedEventArgs e)
    {

        //----- SHOW MENU DIALOG BOX -----
        MenuPopup DialogBox = new MenuPopup();
        await DialogBox.ShowAsync();
        if (DialogBox.Result == MenuPopup.DialogResult.MenuItem1)
        {
            //Do something...
            int i = 0;
        }
    }
UK Electronic Designer
USEFUL?
We benefit hugely from resources on the web so we decided we should try and give back some of our knowledge and resources to the community by opening up many of our company’s internal notes and libraries through mini sites like this. We hope you find the site helpful.
Please feel free to comment if you can add help to this page or point out issues and solutions you have found, but please note that we do not provide support on this site. If you need help with a problem please use one of the many online forums.