【发布时间】:2010-01-07 11:19:09
【问题描述】:
我对 Silverlight 和 MVVM / Prism 模式还很陌生,所以这可能是一个愚蠢的问题。
我有一个视图,其中包含自定义控件。这些自定义控件实际上也是 View,并且有 ViewModel 来驱动它们。
目前要将这些“子”视图添加到我正在使用的视图中(参见图 1),然后在 ViewModel 中我有一个 Initialise() 方法来解析子视图并注入它(参见图 2) .
图1
<UserControl
x:Class="ProjectA.Module.Screens.Views.PlatformScreenView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"
>
<Grid x:Name="LayoutRoot">
<ContentControl
Regions:RegionManager.RegionName="FeaturesSelectionControl"
/>
</Grid>
图2
public void Initialise()
{
IRegion featuresRegion = _regionManager.Regions["FeaturesSelectionControl"];
featuresRegion.Add(_container.Resolve<IFeatureSelectionControlViewModel>().View);
}
我的问题是我是否必须为要添加的每个控件执行此操作?我理解为什么它会这样工作,但它似乎有很多代码,而且我需要跟踪所有区域名称并确保我没有任何冲突等。有没有更简单的方法可以在没有区域和只是在 XAML 中?
我在 StackOverflow here 上看到了 XAML 的 sn-p,但不确定它是如何工作的,以及它是否是我想要的 -
<ContentControl Content="{Binding SmartFormViewModel}"/>
非常感谢任何帮助。
詹姆斯
【问题讨论】:
-
在您澄清后,我编辑了我的回复。希望这能满足您的需求。
-
在您发表其他评论后,我进一步编辑了我的回复。我没有意识到您的问题是父视图和子视图的范围稍小。
标签: c# silverlight mvvm controls prism