2

ViewModelのリストをアイテムとしてタブコントロールにバインドするのに問題があります。

//ShellViewModel.cs
private BindableCollection<RecentUnitViewModel> RecentUnitModels { get; set; }
<!-- ShellView.xaml -->
<GroupBox FontSize="16" Margin="10" FontWeight="DemiBold" Grid.Row="3">
    <GroupBox.Header>Last Seen</GroupBox.Header>
    <TabControl ItemsSource="{Binding RecentUnitModels}" >
    </TabControl>
</GroupBox>

予期しない結果:ビューの代わりにタイプ「RecentUnitViewModel」を表示します。

4

2 に答える 2

9

TabControlのCaliburnバインディングは、慣例に従ってバインドするConductorがある場合に最も簡単です(DataContextをConductorインスタンスに設定し、TabControlに「Items」という名前を付けます)。ここでの問題は、TabControlが共有される単一のコンテンツプレゼンターをインスタンス化することです。すべてのタブで表示されますが、コンテンツが変更されたときにViewModelのビューを見つけるようにCaliburn.Microに指示する必要があります。私はこれがうまく機能することを発見しました:

        <TabControl.ContentTemplate>
            <DataTemplate>
                <ContentControl cal:View.Model="{Binding}"/>
            </DataTemplate>
        </TabControl.ContentTemplate>

ここでは、バインドしているViewModelが真のViewModel(UserControlsではない)であり、Caliburn.Microがバインドしている個別のビュー(UserControls)があることを前提としています。

于 2012-09-19T20:11:59.883 に答える
1

あなたの財産は公開する必要があります...

于 2012-09-19T19:41:44.250 に答える