저는 Caliburn.Micro에 새로 온 사람이며 아직 얻지 못하는 몇 가지 사항이 있습니다. 첫째ViewModel 자체를 Caliburn Micro 규약을 사용하여 DataTemplate에 바인딩합니다.
뷰 모델 :의
먼저 다른 ViewModels의 수집 관리하는 뷰 모델이다 : 나는 ItemsControl에있어
public class NavigationBarViewModel : PropertyChangedBase
{
public BindableCollection<IHaveDisplayName> Items { get; set; }
}
를 a의 루트로 (그것은 그 중요한 경우 Telerik RadOutlookBar입니다) UserControl
그보기 및 ItemTemplate 너무 내가 해당 컬렉션에 삽입 할 ViewModels 래핑 된 해당 RadOutlookBarItem (여기 ItemTemplate 대신 ItemContainer 사용해야합니까?) 설정합니다.
<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>
이렇게하면 ContentControl의 위치에 컬렉션의 ViewModels가 표시되지 않습니다. 컨벤션이 작동하지만 컨벤션을 통해 ContentControl에 바인딩하는 방법을 알지 못하도록 모델을 DataTemplate의 루트 항목에 바인딩합니다. 물론 DataTemplate 내부의 DataContext는 ViewModel 자체입니다. 일반 WPF 표준을 사용하면 Content = "{Binding}"을 넣을 수 있습니다.
이제 모델은 RadOutlookBarItem 내부에 있지만보기가 적용되지 않습니다. 보기조차도 찾을 수 없으며, 클래스 이름이있는 문자열 만 표시됩니다.
이 작업을 수행하는 적절한 방법이 아닙니까?