Статьи

Windows Phone 7 и окно сообщений

В этой статье мы обсудим MessageBox в Windows Phone 7. Мы также обсудим, как настроить MessageBox в Windows Phone 7. Мы будем использовать Microsoft.Xna.Framework.GamerServices для создания настройки MessageBox в Windows Phone 7.

Давайте напишем некоторый код:

Шаг 1. Создайте проект приложения для Windows Phone.

Шаг 2: Давайте добавим три кнопки в MainPage.xaml. Первые две кнопки будут использоваться для демонстрации нормального окна сообщения. Первое окно сообщения будет иметь только кнопку ОК, а второе окно сообщения будет иметь ОК и Отмена оба.

Третья кнопка будет использоваться для демонстрации настраиваемого окна сообщения с использованием Microsoft.Xna.Framework.GamerServices.

Текстовое поле будет использоваться для отображения, какая кнопка окна сообщения была нажата.

<Button Content="Ok Demo" Height="72" HorizontalAlignment="Center"
Margin="0,0,0,0" Name="Ok" VerticalAlignment="Top" Width="160" Click="Ok_Click" />

<Button Content="Ok Cancel Demo" Height="72" HorizontalAlignment="Center"
Margin="0,75,0,0" Name="OkCancel" VerticalAlignment="Top" Width="260" Click="OkCancel_Click" />

<Button Content="XNA MessageBox Demo" Height="72" HorizontalAlignment="Center"
Margin="0,150,0,0" Name="XNAMessageBox" VerticalAlignment="Top" Width="340" Click="XNAMessageBox_Click" />

<TextBlock x:Name="MessageResult" Text="" Style="{StaticResource PhoneTextNormalStyle}" HorizontalAlignment="Center" Margin="0,170,0,0" Height="40"/>

 

Шаг 3: Добавьте ссылку на Microsoft.Xna.Framework.GamerServices

 


Шаг 4: Добавьте приведенный ниже код для первых двух кнопок, чтобы получить ОК и ОК и окно сообщения Отмена.

 

private void Ok_Click(object sender, RoutedEventArgs e)
{
   MessageBoxResult res = MessageBox.Show("OK", "First Message Box", MessageBoxButton.OK);
   if (res == MessageBoxResult.OK)
   {
      MessageResult.Text = "Ok Selected";
   }
}

private void OkCancel_Click(object sender, RoutedEventArgs e)
{
   MessageBoxResult res = MessageBox.Show("OK and Cancel", "First Message Box", MessageBoxButton.OKCancel);
   if (res == MessageBoxResult.OK)
   {
      MessageResult.Text = "Ok Selected";
   }
   if (res == MessageBoxResult.Cancel)
   {
      MessageResult.Text = "Cancel Selected";
   }
}

 MessageBoxButton имеет только два свойства OK и OKCancel

 

MessageBoxResult имеет Отмена, Нет, Нет, ОК и Да.

 

Теперь MessageBoxButton имеет только опции OK и OKCancel, но MessageBoxResult имеет опции Отмена, Нет, Нет, OK и Да. Так как в «MessageBoxButton» нет «Да» и «Нет», значит, нет опции «Да» и «Нет» в MessageBoxResult. Infact None опция MessageBoxResult также не имеет никакого значения.

Теперь давайте добавим код для третьей кнопки.

private void XNAMessageBox_Click(object sender, RoutedEventArgs e)
{
   //0 specifies index of focus of button
   Guide.BeginShowMessageBox("XNA MessageBox Demo", "This is XNA Message Box", new string[] { "Custom OK", "Custom Cancel" }, 0,MessageBoxIcon.Warning, new AsyncCallback(OnMessageBoxAction), null);
}

Signture of Guide.BeginShowMessageBox

Имя кнопки можно настроить с помощью Microsoft.Xna.Framework.GamerServices. Я использовал заголовок кнопки MessageBox как Custom OK и Custom Cancel.

Кнопка MessageBoxIcon имеет Alert, Error, None и Warning.

Ни один звук не будет генерироваться, я получил такой же звук для остальных трех предупреждений, ошибок и предупреждений.

Чтобы выполнить любое действие, основанное на выбранной опции, необходимо вызвать асинхронный метод.

private void OnMessageBoxAction(IAsyncResult ar)
{
   int? selectedButton = Guide.EndShowMessageBox(ar);
   switch (selectedButton)
   {
      case 0:
         Deployment.Current.Dispatcher.BeginInvoke(() => MessageResult.Text = "Custom Ok Selected" );
         break;

      case 1:
         Deployment.Current.Dispatcher.BeginInvoke(() => MessageResult.Text = "Custom Cancel Selected");
         break;

      default:
         break;
   }
}

Шаг 5: Теперь запустите приложение.

 

При нажатии любой из вышеперечисленных кнопок вы увидите окно сообщений другого типа.



На этом статья окна Windows Phone 7 заканчивается.