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

如果您有一个按约定绑定的导体(将 DataContext 设置为导体实例并将 TabControl 命名为“项目”),则 TabControl 的 Caliburn 绑定是最简单的。这里的问题是 TabControl 实例化了一个共享的内容呈现器通过所有选项卡,但您需要以某种方式告诉 Caliburn.Micro 在更改内容时为 ViewModel 找到视图。我发现这很好用:

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

我在这里假设您要绑定的 ViewModel 是真正的 ViewModel(不是 UserControl),并且您有 Caliburn.Micro 为您绑定的单独的 View(UserControl)。

于 2012-09-19T20:11:59.883 回答
1

您的财产需要公开...

于 2012-09-19T19:41:44.250 回答