Как я делаю модальное диалоговое окно для Страницы в моем WPF-приложении?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

25
задан Dave Clemmer 26 July 2011 в 18:45
поделиться

2 ответа

Если я корректен в интерпретации Вашего сообщения, Вы хотите что-то, что работает подобное тому, что Billy Hollis демонстрирует в своем приложении .

StaffLynx, я недавно создал подобное управление, и оказывается, что этот вид идеи относительно прост реализовать в WPF. Я создал пользовательский элемент управления под названием DialogPresenter. В шаблоне управления для пользовательского элемента управления я добавил разметку, подобную следующему:

<ControlTemplate TargetType="{x:Type local=DialogPresenter}">
  <Grid>
    <ContentControl>
      <ContentPresenter />
    </ContentControl>
    <!-- The Rectangle is what simulates the modality -->
    <Rectangle x:Name="Overlay" Visibility="Collapsed" Opacity="0.4" Fill="LightGrey" />
    <Grid x:Name="Dialog" Visibility="Collapsed">
      <!-- The template for the dialog goes here (borders and such...) -->
      <ContentPresenter x:Name="PART_DialogView" />
    </Grid>
  </Grid>
  <ControlTemplate.Triggers>
    <!-- Triggers to change the visibility of the PART_DialogView and Overlay -->
  </ControlTemplate.Triggers>
</ControlTemplate>

я также добавил Show(Control view) метод, который находит 'PART_DialogView' и добавляет переданный в поле зрения Content свойство.

Это затем позволяет мне использовать DialogPresenter следующим образом:

<controls:DialogPresenter x:Name="DialogPresenter">
  <!-- Normal parent view content here -->
  <TextBlock>Hello World</TextBlock>
  <Button>Click Me!</Button>
</controls:DialogPresenter>

К обработчику событий кнопок (или связанная команда), я просто называю Шоу () методом DialogPresenter.

можно также легко добавить разметку ScaleTransform к шаблону DialogPresenter для получения масштабирующихся эффектов, показанных в видео. Это решение имеет аккуратный и опрятный код пользовательского элемента управления и очень простой интерфейс для Вашей команды программистов UI.

Hope это помогает!

25
ответ дан Brad Leach 28 November 2019 в 21:37
поделиться

Вы не ищете модальное диалоговое окно здесь. Вам нужна функция, которая отключит управление "страницей", показать диалоговое окно и повторно включить его, когда диалоговое окно закроется.

я не слишком уверен, понимаете ли Вы то, что модальное диалоговое окно предназначено, чтобы сделать хотя?

1
ответ дан Mez 28 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: