WPF RibbonControl (2010 년 10 월 버전)을 사용하여 작은 문제가 발생했습니다. 내 생각은 RibbonGroup의 ItemsSource 속성을 내 viewmodel에 바인딩하고 DataTemplate을 사용하여 필요에 따라 RibbonButton을 만드는 것이 었습니다. 이것은 작동하지만 창 보여줄 때 (각 버튼에 대해 하나) 바인딩 오류가 발생합니다 :WPF 리본 : DataTemplate이 BindingExpression 경로 오류를 발생시킵니다.
여기 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')
는 뷰 모델은 문자열 배열로 대체, 코드 조각이다,하지만 문제는 동일 :
<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>
다시 작동하지만 바인딩 오류는 약간 성가시다. 그것을 제거 할 수있는 방법이 있습니까?
리본 단추에 대한 사용자 지정 컨트롤 템플릿을 만드는 것이 트릭을 만들었습니다. – janemann