将相同类型viewModels的列表绑定到Caliburn.Micro中的tabcontrol

时间:2012-09-19 19:38:29

标签: wpf c#-4.0 mvvm wpf-controls caliburn.micro

我无法将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”类型而不是View。

2 个答案:

答案 0 :(得分:9)

如果你有一个按惯例绑定的Conductor,那么TabControl的Caliburn绑定最简单(将DataContext设置为Conductor实例并命名TabControl“Items”。)这里的问题是TabControl实例化所有选项卡共享的单个内容演示者,但您需要以某种方式告诉Caliburn.Micro在更改内容时查找ViewModel的视图。我发现这很好用:

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

我在这里假设你绑定的ViewModels是真正的ViewModels(不是UserControls),并且你有Caliburn.Micro为你绑定的单独的Views(UserControls)。

答案 1 :(得分:1)

你的财产需要公开......