私のメインビュー内に異なるビューをTabControlItems
に表示したい。MVVM TabControlItemsへのビューのバインド - ビューが表示されない
public sealed class TabItem
{
public string Header { get; set; }
public ViewModelBase Content { get; set; }
}
私は私のViewModelでList
に呼び出す:私のビューに表示され、その後EDIT
private ObservableCollection<TabItem> _views;
public ObservableCollection<TabItem> Views
{
get { return _views; }
set
{
_views = value;
RaisePropertyChanged(() => Views);
}
}
public IndexMainViewModel()
{
Views = new ObservableCollection<TabItem>();
Views.Add(new TabItem { Header = "Export", Content = new ExportViewModel() });
Views.Add(new TabItem { Header = "Import", Content = new ImportViewModel() });
}
そして:私はこのようなクラスを作成しました。これを行うために
<window xmlns:views="clr-namespace:EDICOT_Module_Import_Export_Articles.View"
xmlns:vm="clr-namespace:EDICOT_Module_Import_Export_Articles.ViewModel"
xmlns:model="clr-namespace:EDICOT_Module_Import_Export_Articles.Model.Classes"
DataContext="{Binding IndexMainVM, Source={StaticResource Locator}}">
<TabControl ItemsSource="{Binding Views}">
<TabControl.Resources>
<DataTemplate DataType="{x:Type model:TabItem}">
<DataTemplate.Resources>
<DataTemplate DataType="{x:Type vm:ImportViewModel}">
<views:ImportView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ExportViewModel}">
<views:ExportView />
</DataTemplate>
</DataTemplate.Resources>
<ContentControl Content="{Binding Content}"/>
</DataTemplate>
</TabControl.Resources>
<TabControl.ItemTemplate >
<DataTemplate >
<TextBlock Text="{Binding Header}"/>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
問題はヘッダーだけが表示されますが、コンテンツ(ビュー)は表示されません。代わりに、TabItemクラスへのパスが表示されます。
多くの情報を提供する:トピックに必要なものだけを保持するためにコードを省略し、MVVM Lightを使用します。
ここで私が逃したものは本当に得られません!あなたの助けにThx。
にそれをバインドするリソースにそのインスタンスを追加します。 – RizzCandy