1

我正在尝试以一种 MVVM 的方式使用 Telerik RadControls,但遇到了一些奇怪的问题。

RadOutlookBar 后面的 Viewmodel 有一个 ViewModel 集合,每个 ViewModel 都有一个 Title 字符串属性。我想将其定义为将它们包裹在 RadOutlookBarItem 中并将标题/标题属性绑定在一起。

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>

这按预期工作,只是 Header 出来很奇怪。而不是像一个静态字符串项,它似乎被包裹在另一个对象中,该对象的行为类似于 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 回答