1
난 내 뷰 모델에 대한 DataTemplate을하고내 창 자원
<Window.Resources>
<DataTemplate DataType="{x:Type SharedViewModels:DatabaseViewModel}">
<SharedViews:DatabaseView/>
</DataTemplate>
<LocalViewModels:SharedSettingsViewModel x:Key="SharedSettingsViewModel"/>
</Window.Resources>
DatabaseViewModel
내 정적 SharedSettingsViewModel
의 인스턴스 인 정적 mainviewmodel이 있고 난이 탭 컨트롤이
<TabControl DataContext="{Binding Source={StaticResource SharedSettingsViewModel}}" ItemsSource="{Binding SharedSettingsViewModelsTabList}">
<TabControl.ItemTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding Content}"/>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
와 나는이
SharedSettingsViewModelTabList.Add(new Shared.Models.TabItem() { Header = "Sql Databases", Content = DatabaseViewModel });
처럼 내에서 TabControl itemssorce에 항목을 추가
내 의 데이터 접두어를 내 SharedSettingsViewModel
안에있는 DatabaseViewModel
인스턴스로 설정하는 방법은 무엇입니까? 내가
DataContext="{Binding DatabaseViewModel}"
을 시도 사용자 컨트롤하지만이 나던 내보기 DatabaseView XAML에서
는
여기이 될 것입니다 내 TabItem의 모델
public class TabItem : MVVM.ObservableObject
{
public string Header { get; set; }
public MVVM.ObservableObject Content { get; set; }
}
내 DatabaseViewModel입니다 작동하는 것 SharedSettingsViewModel의 속성으로 정의 됨
private ObservableCollection<Models.Database> databases;
public ObservableCollection<Models.Database> Databases
{
get
{
if (databases == null)
{
databases = new ObservableCollection<Models.Database>();
databases.Add(new Models.Database() { Displayname = "new" });
}
return databases;
}
set
{
SetField(ref databases, value, "Databases");
}
}
여기에는 탭 항목 수집
public class SharedSettingsViewModel : MVVM.ObservableObject
{
private ObservableCollection<Shared.Models.TabItem> SharedSettingsViewModelTabList;
public ObservableCollection<Shared.Models.TabItem> SharedSettingsViewModelTabList
{
get
{
if (sharedSettingsViewModelTabList == null)
{
sharedSettingsViewModelTabList = new ObservableCollection<Shared.Models.TabItem>();
}
return sharedSettingsViewModelTabList;
}
}
//my DatabaseViewModel property..as a child view model
private Shared.ViewModels.DatabaseViewModel databaseViewModel;
public Shared.ViewModels.DatabaseViewModel DatabaseViewModel
{
get
{
if (databaseViewModel == null)
{
databaseViewModel = new Shared.ViewModels.DatabaseViewModel();
}
return databaseViewModel;
}
set
{
SetField(ref databaseViewModel, value, "DatabaseViewModel");
}
}
}
이 포함되어 내 SharedSettingsViewModel입니다