WPF Ribbon: DataTemplate вызывает ошибку пути BindingExpression

Я столкнулся с небольшой проблемой при использовании WPF RibbonControl (версия от октября 2010 г.). Моя идея заключалась в том, чтобы связать свойство ItemsSource группы RibbonGroup с моей моделью просмотра и использовать DataTemplate для создания RibbonButtons по мере необходимости. Это работает, но вызывает ошибку привязки (по одной для каждой кнопки) при отображении окна:

Ошибка System.Windows.Data: 40: ошибка пути BindingExpression: свойство IsDropDownOpen не найдено в объекте '' RibbonContentPresenter '(Имя =' PART_ContentPresenter ')'. BindingExpression: Path = IsDropDownOpen; DataItem = 'RibbonContentPresenter' (Name = 'PART_ContentPresenter'); целевой элемент - RibbonButton (Name = ''); целевым свойством является 'NoTarget' (тип 'Object')

Вот фрагмент кода, модель просмотра заменяется массивом строк, но проблема та же:

<ribbon:RibbonWindow x:Class="WpfRibbonApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" x:Name="RibbonWindow" Width="640" Height="480" >

    <ribbon:RibbonWindow.Resources>
        <x:Array x:Key="buttonArray" Type="sys:String">
            <sys:String>Button 1</sys:String>
            <sys:String>Button 2</sys:String>
            <sys:String>Button 3</sys:String>
            <sys:String>Button 4</sys:String>
            <sys:String>Button 5</sys:String>
            <sys:String>Button 6</sys:String>
        </x:Array>
        <DataTemplate x:Key="buttonTemplate">
            <ribbon:RibbonButton Label="{Binding}"  />
        </DataTemplate>        
    </ribbon:RibbonWindow.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <ribbon:Ribbon>
            <ribbon:RibbonTab Header="Tab1">
                <ribbon:RibbonGroup Header="Group1"
                    ItemsSource="{StaticResource buttonArray}" 
                    ItemTemplate="{StaticResource buttonTemplate}"
                />
            </ribbon:RibbonTab>
        </ribbon:Ribbon>         
    </Grid>
</ribbon:RibbonWindow>

Опять же, это работает, но ошибка привязки немного раздражает. Есть ли способ избавиться от этого?

5
задан janemann 25 November 2010 в 10:26
поделиться