2009-05-07 3 views
0

Мне нужно создать прототип, чтобы проверить способность WPF, чтобы сделать следующее:Каков наилучший подход для создания всплывающих окон MDI в WPF?

  • один базовый окно в качестве основы
  • приложения в этом окне пользователь может нажать (например, на «добавить клиент») и новое окно всплывает
    • всплывающее окно ярко
    • главное окно в фоновом режиме затенен
  • , если пользователь нажмет на главном окне
    • главное окно становится ярким
    • всплывающее окно тускнеет и уходит на задний план
  • любые изменения в одном окне мы должны принять незамедлительные эффект все окна, яркие или затемненные

вопросы:

  1. Должны ли дочерние окна быть пользовательскими элементами управления или окнами?
  2. Есть ли какие-либо «рамки MDI», я могу воспользоваться
  3. Есть ли что-нибудь особенное, что я должен рассмотреть, чтобы убедиться, что все окна постоянно обновляются, например. использовать ObservableCollections и т. д.?
  4. Должен ли я хранить все глобальные переменные в качестве свойств в главном окне, чтобы дочерние окна могли обращаться к ним?
  5. как бы вы начали «затемнять окно» или «размывание окна» в WPF?

Любые консультации приветствуются.

ответ

1
  1. Дочерние окна должны выводиться из окна, а затем вызвать Show() в экземпляре вашего класса, чтобы отобразить немодальное диалоговое окно.
  2. Не то, чтобы я знал.
  3. Используйте привязку данных WPF, чтобы поддерживать все в актуальном состоянии - ваши классы данных должны реализовывать INotifyPropertyChanged и открывать коллекции через ObservableCollection, как вы заявили. Главное окно и всплывающее окно должны иметь один и тот же объект для DataContext, таким образом, если один экран изменяет свойство объекта, то он будет автоматически обновляться.
  4. Используйте модельный вид - просмотрите модель, чтобы данные и пользовательский интерфейс были полностью разделены. Попробуйте этот инструментарий: http://blogs.msdn.com/ivo_manolov/archive/2009/05/03/9584900.aspx
  5. Там нет никакой реальной функции «тусклым», но вы можете сделать что-то вроде этого:

код:

<Window> 
    <Grid x:Name="dimElement"> 
    <Grid Background="Gray" Opacity="0.5" Visibility="Collapsed"/> 
    <Grid> 
     main content goes here 
    </Grid> 
    </Grid> 
</Window> 

Если вы хотите, чтобы затемнить окно, установленное Видимость на dimElement до «Visible» и установите для параметра «Collapsed» значение un-dim, если необходимо.

Надеюсь, что это поможет!

Смежные вопросы