我是 Caliburn.Micro 的新手,但我仍然没有得到一些东西。
视图模型优先:
首先是管理其他 ViewModel 集合的 ViewModel:
public class NavigationBarViewModel : PropertyChangedBase
{
public BindableCollection<IHaveDisplayName> Items { get; set; }
}
我有一个 ItemsControl(如果重要的话,它是 Telerik RadOutlookBar)作为 UserControl 的根
那个视图,我也设置了 ItemTemplate 确保我插入到集合中的 ViewModel 被包装在相应的 RadOutlookBarItem 中(我应该在这里使用 ItemContainer 而不是 ItemTemplate 吗?)。
<telerik:RadOutlookBar x:Name="Items">
<telerik:RadOutlookBar.TitleTemplate>
<DataTemplate>
<ContentControl Content="{Binding Path=DisplayName}" />
</DataTemplate>
</telerik:RadOutlookBar.TitleTemplate>
<telerik:RadOutlookBar.ItemTemplate>
<DataTemplate>
<telerik:RadOutlookBarItem cal:Bind.Model="{Binding}"
Header="{Binding Path=DisplayName}">
<ContentControl />
</telerik:RadOutlookBarItem>
</DataTemplate>
</telerik:RadOutlookBar.ItemTemplate>
</telerik:RadOutlookBar>
这样,我不希望集合中的 ViewModel 出现在 ContentControl 所在的位置。我将模型绑定到 DataTemplate 的根项以确保约定有效,但不知道如何使用约定绑定到 ContentControl。DataTemplate 中的 DataContext 当然是 ViewModel 本身。使用普通的 WPF 标准,我会输入 Content="{Binding}"。
现在模型在 RadOutlookBarItem 内,但它的视图没有被应用。连 View 都找不到,只有一个带有类名的字符串。
这不是正确的方法吗?