私はTabControlを含むUsercontrol(TabUserControl)を持っています。そのUserControlのViewModelは、TabItemのObservableコレクションを読み込みます。これらの項目の1つは別のユーザーコントロールです。タブコントロールにテキストをロードするだけで問題はありませんが、他のユーザーコントロールをTabUserControlのタブアイテムにどのように読み込むことができますか? 私はMVVMを使用しています。ここでTabContemにUserControlをロード
は私のコードです:
public class TabItem
{
public string Header { get; set; }
public object Content { get; set; } // object to allow all sort of items??
}
TabUserControl
public class TabViewModel
{
public ObservableCollection<TabItem> Tabs {get;set;}
public TabViewModel()
{
Tabs = new ObservableCollection<TabItem>();
//Tabs.Add(new TabItem { Header = "Overview", Content = new OverviewViewModel() }); How to load a usercontrol here if it's in the ItemCollection?
Tabs.Add(new TabItem { Header = "Overview", Content = "Bla bla bla" });
Tabs.Add(new TabItem { Header = "Two", Content = "Two's content" });
}
}
そしてTabControlのXAMLのViewModelに:
<TabControl x:Name="_tabControl"
ItemsSource="{Binding Tabs}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header"
Value="{Binding Header}" />
<Setter Property="Content"
Value="{Binding Content}" />
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
それは限り、私はのviewmodelをロードいけないとして働きますtabItemsコレクション内のユーザーコントロールのどのようにTabItemにUserTabControlをロードさせることができますか? すべてのタブアイテムにusercontrolが含まれることを意図しています。各ユーザーコントロールはそれ自身のことです。
私はWPFの初心者として誰かが私を助けることを願っています。 Thx!
こんにちはRachel。あなたのコメントのためのThx。私はあなたが言っている論理を理解していますが、私はそれを動作させるために少し頑張っています。特にITabViewModelの部分はどこから取得しますか?私の質問のもう一つの部分は、いくつのタブを追加すべきかわからない場合はどうしたらいいですか?私はいつも少なくとも1つのタブを確信していますが、ボタンをクリックすると他のタブを追加する必要があります。 – PitAttack76
@ Stieven76 'ITabViewModel'は単に' Header'プロパティを定義するインタフェースです。 ViewModels A、B、CはすべてITabViewModelから継承されるため、すべて同じ基本クラスを共有します。MVVMを使用しているので、Buttonの 'Command'プロパティは' ViewModel'のコマンドを指していなければなりません。単に 'TabViewModels'コレクションに新しいオブジェクトを追加するだけで、おそらく選択したものに設定します。 – Rachel
Thx Rachel。私はそれが私が望むように働いている。ヘルプのためのThx! – PitAttack76