【问题标题】:WPF UI Design with user controls带有用户控件的 WPF UI 设计
【发布时间】:2011-03-09 12:31:28
【问题描述】:

作为 WPF 的新手,我想澄清一下我在 WPF 中构建 UI 的方法。我正在使用带有 MVVM 的 WPF。我的方法是使用一个包含用户控件的主窗口,这些控件可以在 UI 树的深处运行多个级别。例如,我在一个窗口中有一个编辑器。许多项目可以在编辑器中进行编辑,并且每个项目的 UI 都不同,但编辑器始终显示“确定”和“取消”按钮。因此,带有 OK 和 Cancel 的主编辑器窗口可以在多个编辑器之间共享。我正在以这样一种方式设计应用程序,即编辑器用户控件只会绑定被编辑项目的视图模型。因此,在设计用于编辑单个项目的 UI 时,不会拉入 OK 或 Cancel 按钮,而只是将项目放入将提供按钮的主编辑器中。我很确定我可以使用 WPF 命令基础架构正确处理命令。

如果我可以在这里用一些 xaml 说清楚的话。请不要介意控件放置本身,我的意思是解释在许多项目之间共享通用 UI 的基本思想。

<UserControl Name="EditorMainWindow"> 
 <Grid>
   <StackPanel>
        <ItemsControl ItemsSource="{Binding ItemToBeEdited}">                
        </ItemsControl>  
       <Button Content="OK" Width="120" Command="{Binding SomethingforOK}" />
       <Button Content="Cancel" Width="120" Command="{Binding SomethingforCancel}"/>         
    </StackPanel>               
 </Grid>
</UserControl>     

按照我的做法,用户界面树可以深入几个层次。我将受益匪浅,因为如果客户要求在一个特定的地方更改 UI,我不需要在很多地方更改它(只要它是共享的)。

由于我是 WPF 新手,我想知道这种方法是否有任何问题。你能告诉我这是否有意义吗?

【问题讨论】:

    标签: wpf user-controls wpf-controls


    【解决方案1】:

    您可以为自己节省很多时间。 Catel已经提供了这样一个窗口:

    DataWindow

    它已完全准备好支持动态嵌套用户控件的 MVVM(Catel 也是一个 MVVM 框架)。好在它还支持开箱即用的错误处理,所以一旦窗口模板出现错误,用户就会在InfoBarMessageControl看到错误。

    【讨论】:

    • 谢谢。但是,我对使用框架有点犹豫,因为该应用程序已经存在了一段时间。卡特尔看起来不错,恭喜。
    • 你不必使用整个框架,你可以使用它的一些想法(因为我们已经走过了很多问题)。祝你修复应用程序好运,创建基本模板确实是个好主意(为什么微软不提供这些基本的东西?)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2010-10-14
    相关资源
    最近更新 更多