이 문제는 일반적으로 영역 및 RegionManager를 사용하여 해결됩니다. 메인 윈도우 ViewModel에서 일련의 영역이 생성되어 RegionManager에 추가됩니다. 그런 다음 ViewModels를 해결하고 Region.Views 컬렉션에 추가 할 수 있습니다.
XAML에서 Region은 주 ViewModel의 Region 속성에 바운드 된 ItemsControl의 ItemsSource 속성을 가짐으로써 정상적으로 주입됩니다.
public class TestScreenViewModel
{
public const string MainRegionKey = "TestScreenViewModel.MainRegion";
public TestScreenViewModel(IUnityContainer container, IRegionManager regionManager)
{
this.MainRegion = new Region();
regionManager.Regions.Add(MainRegionKey, this.MainRegion);
}
public Region MainRegion { get; set; }
}
이것은 당신의 IModule
#region IModule Members
public void Initialize()
{
RegisterViewsAndServices();
var vm = Container.Resolve<SelectorViewModel>();
var mainScreen = Container.Resolve<TestScreenViewModel>();
mainScreen.MainRegion.Add(vm);
var mainView = ContentManager.AddContentView("Test harness", mainScreen);
}
#endregion
정상적으로 해결 된 것 그리고 뭔가를 찾고 템플릿의 XAML 표현 :
그래서, 메인 화면의 뷰 모델에서이 같은 것을 할 것이다
<DataTemplate DataType="{x:Type TestModule:TestScreenViewModel}">
<ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto">
<StackPanel>
<ItemsControl ItemsSource="{Binding Path=MainRegion.Views}" />
</StackPanel>
</ScrollViewer>
</DataTemplate>
감사합니다. 지금 사용해 보겠습니다. ViewModel 클래스를 UserControl의 내용으로 넣으면 나에게 혼란 스럽습니다.; D : DataTemplate에 적절한보기를 적용하여 표시합니다. –
Kage