Ich habe ein kleines Problem mit dem WPF RibbonControl (Oktober 2010-Version) festgestellt. Meine Idee war, die ItemsSource-Eigenschaft einer RibbonGroup an mein Viewmodel zu binden und eine DataTemplate zu verwenden, um RibbonButtons nach Bedarf zu erstellen. Dies funktioniert, aber es verursacht einen Bindungsfehler (eine für jede Taste), wenn Sie das Fenster anzuzeigen:WPF-Multifunktionsleiste: DataTemplate verursacht BindingExpression-Pfadfehler
System.Windows.Data Error: 40 : BindingExpression path error: 'IsDropDownOpen' property not found on 'object' ''RibbonContentPresenter' (Name='PART_ContentPresenter')'. BindingExpression:Path=IsDropDownOpen; DataItem='RibbonContentPresenter' (Name='PART_ContentPresenter'); target element is 'RibbonButton' (Name=''); target property is 'NoTarget' (type 'Object')
Hier ist ein Codefragment, das Ansichtsmodell durch eine Reihe von Zeichenkette ersetzt wird, aber das Problem ist, das gleiche:
<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>
Wieder funktioniert es, aber der Binding-Fehler ist ein bisschen nervig. Gibt es eine Möglichkeit, es los zu werden?
Das Erstellen einer benutzerdefinierten Steuerelementvorlage für die Menüband-Schaltfläche hat den Trick gemacht. – janemann