Как создать в коде специальный ящик сообщений с изображениями в WPF C #? - PullRequest
0 голосов
/ 24 марта 2011

Как создать в коде позади (без XAML) собственный MessageBox (диалоговые окна) в WPF C #?Я гуглил это и, похоже, не нашел решения.Я хотел бы добавить в него MessageBox с изображениями и другими элементами управления.

Ответы [ 5 ]

3 голосов
/ 24 марта 2011

Вы можете использовать это решение:

    string messageBoxText = "Do you want to save changes?";
    string caption = "Your caption";
    MessageBoxButton button = MessageBoxButton.YesNoCancel;
    MessageBoxImage icon = MessageBoxImage.Warning;
    MessageBox.Show(messageBoxText, caption, button, icon);

просмотрите эту статью , вы можете перекодировать весь Xaml в чистый c # в пункте пользовательских диалоговых окон, если хотите.1007 * или вы можете создать свое собственное Окно и использовать MyWindow.ShowDialog().

Как в этом коде:

    Window wnd = new Window();
    Grid grid = new Grid();
    wnd.Height = 200;
    wnd.Width = 150;
    grid.RowDefinitions.Add(new RowDefinition {Height = new GridLength(100) });
    grid.RowDefinitions.Add(new RowDefinition {Height = GridLength.Auto });
    wnd.Content = grid;
    Image img = new Image();
    Button btn = new Button();
    btn.Content = "OK";
    btn.VerticalAlignment = VerticalAlignment.Bottom;
    Grid.SetRow(img, 0);
    Grid.SetRow(btn, 1); 
    grid.Children.Add(img);
    grid.Children.Add(btn);
    wnd.Owner = MyMainWindow;
    wnd.ShowDialog();
1 голос
/ 26 мая 2011

Я реализовал WPF MessageBox, у которого точно такой же интерфейс, как у обычного, а также полностью настраиваемый с помощью стандартных шаблонов управления WPF:

Настраиваемый WPF MessageBox

Особенности

  • Класс WPFMessageBox имеет тот же интерфейс, что и текущий класс MessageFox WPF.
  • Реализован как пользовательский элемент управления, поэтому полностью настраивается с помощьюстандартные шаблоны управления WPF.
  • Имеет шаблон управления по умолчанию, который выглядит как стандартный MessageBox.
  • Поддерживает все распространенные типы окон сообщений: ошибка, предупреждение, вопрос и информация.
  • Имеет те же звуки, что и при открытии стандартного MessageBox.
  • Поддерживает такое же поведение при нажатии кнопки Escape, как и стандартный MessageBox.
  • Предоставляет то же системное меню, что и стандартный MessageBox, включая отключение кнопки Close, когда окно сообщения находится в Да-Нет.mode.
  • Обрабатывает операционные системы с выравниванием по правому краю и справа налево, аналогично стандартному MessageBox.
  • Обеспечивает поддержку установки окна владельца в качестве элемента управления WinForms Form.
1 голос
/ 24 марта 2011

Все из XAML можно переписать на чистом c #:

<Window>
 <Grid>
  <Grid.ColumnDefinition Width="50" />
  <Grid.ColumnDefinition Width="*">
  <Label Grid.Column="0" Content="Hello World!" />
 </Grid>
</Window>

будет выглядеть так:

public void MakeWin(DependencyObject owner)
{
   MakeWin(Window.GetWindow(owner));
}

public void MakeWin(Window owner)
{
   Window window = new Window();
   Grid grid = new Grid();
   grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(50) });
   grid.ColumnDefinitions.Add(new ColumnDefinition {Width = GridLength.Auto});
   window.Content = grid;

   Label label = new Label { Content = "Hello World!" };
   Grid.SetColumn(label, 0); // Depandency property
   grid.Children.Add(label);

   window.Owner = owner;
   window.ShowDialog();
}
1 голос
/ 24 марта 2011

Для изображений есть исходный код (или предварительно созданный) для вас в наборе инструментов WPF http://wpftoolkit.codeplex.com/wikipage?title=MessageBox&version=31

Если вам нужно больше, чем изображение, строка текста и пара кнопок, тогдавам, вероятно, стоит начать смотреть только с использованием нового окна, вызываемого с помощью ShowDialog ()

1 голос
/ 24 марта 2011

Почему бы вам просто не создать свое собственное окно в XAML, а затем использовать showDialog () в коде позади?

...