2

私はCaliburn.Microの初心者ですが、まだ得られていないことがいくつかあります。

最初のViewModel:

1つ目は、他のViewModelのコレクションを管理するViewModelです。

public class NavigationBarViewModel : PropertyChangedBase
{
    public BindableCollection<IHaveDisplayName> Items { get; set; }
}

UserControlのルートとしてItemsControl(重要な場合はTelerik RadOutlookBar)があります

そのビューのビューとItemTemplateを設定し、コレクションに挿入するViewModelが対応する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>

このようにして、コレクション内のViewModelをContentControlがある場所に表示しません。モデルをDataTemplateのルート項目にバインドして、規則が機能することを確認しますが、規則を使用してContentControlにバインドする方法がわかりません。もちろん、DataTemplate内のDataContextはViewModel自体です。通常のWPF標準を使用して、Content="{Binding}"を配置します。

これで、モデルはRadOutlookBarItem内にありますが、そのビューは適用されません。Viewも見つかりません。クラス名の文字列だけが見つかります。

これはこれを行うための適切な方法ではありませんか?

4

1 に答える 1

2

私がここで答えたように:動的Telerik RadOutlookBarヘッダーは、間違ったプロパティを使用していた無関係な問題であると思ったItemTemplateで間違って表示されます。ItemTemplateは、選択時に表示されるピッカーとcontentTemplateを制御します。動作するコードは次のとおりです。

<telerik:RadOutlookBar x:Name="Items">
    <telerik:RadOutlookBar.ContentTemplate>
        <DataTemplate >
            <ContentControl cal:View.Model="{Binding}" />
        </DataTemplate>
    </telerik:RadOutlookBar.ContentTemplate>
    <telerik:RadOutlookBar.TitleTemplate>
        <DataTemplate>
            <TextBlock x:Name="DisplayName"
                       cal:Bind.Model="{Binding}" />
        </DataTemplate>
    </telerik:RadOutlookBar.TitleTemplate>
    <telerik:RadOutlookBar.ItemTemplate>
        <DataTemplate>
            <TextBlock x:Name="DisplayName"
                       cal:Bind.Model="{Binding}" />
        </DataTemplate>
    </telerik:RadOutlookBar.ItemTemplate>
</telerik:RadOutlookBar>
于 2012-06-22T17:35:34.857 に答える