1

Telerik RadControls を MVVM のような方法で使用しようとしていますが、奇妙な問題がいくつかあります。

RadOutlookBar の背後にある Viewmodel には、それぞれ Title 文字列プロパティを持つ ViewModel のコレクションがあります。RadOutlookBarItem 内にラップされ、header/title プロパティを一緒にバインドするように定義したかったのです。

XAML:

<telerik:RadOutlookBar x:Name="Items">
    <telerik:RadOutlookBar.TitleTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding Path=Title}" />
        </DataTemplate>
    </telerik:RadOutlookBar.TitleTemplate>
    <telerik:RadOutlookBar.ItemTemplate>
        <DataTemplate>
            <telerik:RadOutlookBarItem Header="{Binding Path=Title}" >
                <ContentControl Content="{Binding}" />
            </telerik:RadOutlookBarItem>
        </DataTemplate>
    </telerik:RadOutlookBar.ItemTemplate>
</telerik:RadOutlookBar>

これは、ヘッダーが奇妙になることを除いて、意図したとおりに機能します。静的な文字列アイテムのようではなく、RadOutlookBarItem と同様に動作する別のオブジェクト内にラップされているようです (マウスオーバーなどで色が変わります)。

バインドする代わりに単純な文字列に変更しても、それはまだ奇妙です。しかし、RadOutlookBar 内で ItemTemplate を定義しない場合 (つまり、動的コントロールではない場合) は問題ないように見えます。

そこで何が起こっているのでしょうか?

4

1 に答える 1

1

これと別の問題を一気に解決しました。私はずっと間違ったテンプレートにバインドしていました。これにより、自分で OutLookBarItem を追加する必要があると思いました。

結局、バインドしようとしていたものを ContentTemplate にバインドすることになっていました。

<telerik:RadOutlookBar x:Name="Items">
    <telerik:RadOutlookBar.ContentTemplate>
        <DataTemplate >
            <ContentControl Content="{Binding}" />
        </DataTemplate>
    </telerik:RadOutlookBar.ContentTemplate>
    <telerik:RadOutlookBar.TitleTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding DisplayName}" />
        </DataTemplate>
    </telerik:RadOutlookBar.TitleTemplate>
    <telerik:RadOutlookBar.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding DisplayName}" />
        </DataTemplate>
    </telerik:RadOutlookBar.ItemTemplate>
</telerik:RadOutlookBar>

うまくいくはずです。

于 2012-06-22T17:09:57.617 に答える