Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 给出了Prism项目结构的GUI设计_C#_Wpf_Mvvm_Prism_Avalondock - Fatal编程技术网

C# 给出了Prism项目结构的GUI设计

C# 给出了Prism项目结构的GUI设计,c#,wpf,mvvm,prism,avalondock,C#,Wpf,Mvvm,Prism,Avalondock,我有下面的GUI设计,问题是红色的 基本上,我在顶部有一个色带,下面有一个主要区域。如你所见的主要区域 包含许多窗格。这些都是可浮的,可停靠的,都是好东西。我会用阿瓦朗多克。 所以,是的,我的主要问题都在图片上,但它们更多的是为了开始 谈话。我相信你们也做过类似的事情,可以分享与此相关的东西 为了清楚起见,我使用了VisualStudio2012、c#、wpf、prism和avalondock。我当然会努力组织起来 根据MVVM模式进行操作。Ribbon:视情况而定。是否要向功能区添加和删除分

我有下面的GUI设计,问题是红色的

基本上,我在顶部有一个色带,下面有一个主要区域。如你所见的主要区域 包含许多窗格。这些都是可浮的,可停靠的,都是好东西。我会用阿瓦朗多克。 所以,是的,我的主要问题都在图片上,但它们更多的是为了开始 谈话。我相信你们也做过类似的事情,可以分享与此相关的东西

为了清楚起见,我使用了VisualStudio2012、c#、wpf、prism和avalondock。我当然会努力组织起来
根据MVVM模式进行操作。

Ribbon:视情况而定。是否要向功能区添加和删除分区?无论是在运行时还是从开发的角度来看。如果其中一个选项为“是”,则根据需要将功能区拆分为视图/视图模型。如果没有,则只为整个功能区区域创建一个视图/视图模型

是的,您需要这些截面的单独视图/视图模型。可以考虑DokPoad以及建立组件的方法。


我会有一个功能区的菜单区域,和下面的工作区。在“工作区”视图中,我将创建布局,并将每个布局分配给自己的区域,该区域具有相应的视图/视图模型。

是的,关于每个区域的单独视图,您是对的。 如果您正在使用某个功能区控件,例如,从windows本身(System.windows.Controls.ribbon)。然后,该库为您提供了不同类型的按钮/ribbonbutton/下拉按钮等控件

现在AvalondockV2.0已经退出,它对MVVM模式有更好的支持,v1.3的情况不是这样

因为您计划使用PRISM,所以可以使用它提供的区域适配器在各自的区域中承载视图。你应该能找到足够的样品。我试着从阿瓦隆托克项目本身为您快速找到一个


我希望有帮助

请把你的问题写在问题中,用文字,而不仅仅是图片。它更易于阅读,可在外部搜索/索引,可更有效地编辑,等等。我为每个区域使用了一个棱柱区域,并使用一个自定义控件填充该区域,该控件源自内容控件并嵌入Avalon anchorable窗格。但是为了在控件中获得视图和视图模型,我使用了一个工厂。这似乎是最干净、最稳健的方式…@GarryVass你能提供更多细节吗?您有代码要共享吗?代码本身在专有域中,但创建自定义控件很简单,它在其可视化树中包含一个固定窗格。根据需要将视图和视图模型附着到它。很多代码,但概念上非常简单。ribbon在运行时将保持不变,但随着项目的发展,我们将向其添加新的内容。嗯,这样我就可以创建嵌套区域了?您说的是一个工作区,然后用其他区域填充它。@user2381422是的,您可以做嵌套区域。