在WPF中创建MDI弹出窗口的最佳方法是什么?

时间:2009-05-07 13:25:54

标签: wpf software-design

我需要创建一个原型来测试WPF执行以下操作的能力:

  • 一个基本窗口作为应用程序的基础
  • 在此窗口中,用户可以点击(例如点击“添加客户”)并弹出一个新窗口
    • 弹出窗口很明亮
    • 背景中的主窗口变暗
  • 如果用户点击主窗口
    • 主窗口变亮
    • 弹出窗口变暗并进入后台
  • 在一个窗口中的任何更改我们需要在所有窗口中立即生效,明亮或暗淡

问题:

  1. 子窗口应该是用户控件还是窗口?
  2. 是否有任何类型的“MDI框架”我可以利用
  3. 有什么特别之处我必须考虑确保所有窗户不断更新,例如使用ObservableCollections等?
  4. 我应该将所有全局变量作为属性存储在主窗口中,以便子窗口可以访问它们吗?
  5. 你会如何在WPF中“调暗窗口”或“模糊窗口”?
  6. 欢迎任何建议。

1 个答案:

答案 0 :(得分:1)

  1. 子窗口应该从Window派生,然后在类的实例上调用Show()来显示无模式对话框。
  2. 不是我知道的。
  3. 使用WPF数据绑定来保持最新 - 您的数据类应实现INotifyPropertyChanged并通过ObservableCollection公开集合,如您所述。主窗口和弹出窗口应该具有相同的DataContext对象,这样如果一个屏幕更改了对象上的属性,另一个将自动更新。
  4. 使用模型视图 - 查看模型模式以保持数据和UI完全分离。试试这个工具包: http://blogs.msdn.com/ivo_manolov/archive/2009/05/03/9584900.aspx
  5. 没有真正的“昏暗”功能,但你可以这样做:
  6. 代码:

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

    如果你想调暗窗口,请将dimElement上的Visibility设置为“Visible”,并将其设置为“Collapsed”,以便在适当的时候调暗。

    希望有所帮助!