2010-12-14 2 views
3

Я пытаюсь привязать ленту управления динамическими меню.Здание wpf Лента во время выполнения

<ribbon:Ribbon> 
    <ribbon:RibbonTab Header="Reports" 
     ItemsSource="{Binding ReportMenus}" 
     ItemTemplate="{StaticResource RibbonGroupDataTemplate}"> 
    </ribbon:RibbonTab> 
    <ribbon:RibbonTab Header="Test"> 
    <ribbon:RibbonGroup Header="TestGROUP" 
     ItemsSource="{Binding ReportMenus}" 
     ItemTemplate="{StaticResource RibbonButtonDataTemplate}"> 
    </ribbon:RibbonGroup> 
    </ribbon:RibbonTab> 
</ribbon:Ribbon> 

Верхняя ленточная вкладка является моей «настоящей» ребертаброй. Дно начиналось как вручную построенное, с которым я проверяю свои теории.

Вот DataTemplates я пытаюсь использовать:

<Style TargetType="{x:Type ribbon:RibbonButton}"> 
    <Setter Property="Label" 
      Value="{Binding ReportDisplayName}" /> 
</Style> 

<DataTemplate x:Key="RibbonButtonDataTemplate"> 
    <ribbon:RibbonButton /> 
</DataTemplate> 

Это моя первая попытка в группе DataTemplate:

<HierarchicalDataTemplate x:Key="RibbonGroupDataTemplate" DataType="{x:Type Ribbon:RibbonGroup}" 
ItemsSource="{Binding Converter={StaticResource DebugConverter}}" 
ItemTemplate="{StaticResource RibbonButtonDataTemplate}"> 
    <TextBlock Text="{Binding Path=ReportDisplayName}" /> 
</HierarchicalDataTemplate> 

Тогда я пытался это одна:

<DataTemplate x:Key="RibbonGroupDataTemplate"> 
    <ribbon:RibbonGroup ItemsSource="{Binding Converter={StaticResource DebugConverter}}" 
      ItemTemplate="{StaticResource RibbonButtonDataTemplate}" /> 
</DataTemplate> 

Проблема в том, что я не могу получить кнопки для отображения под группой. Если у меня нет группового шаблона, как в моем втором ребрантабе, я могу заставить его работать. Но если я попытаюсь сделать группу динамически, она не сможет создать кнопки. Кроме того, выполняя таблицу данных с группой ribbongroup внутри нее, заголовки обрезаются. Я уже читал об этом, и именно поэтому я пытался использовать HierarchicalDatatemplate. В Regular Datatemplate не предусмотрен элемент itemsource или itemtemplate.

Итак, как мне получить динамическую RibbonGroup для отображения динамических кнопок Ribbon?

Я внедрил некоторые другие изменения сейчас и, по крайней мере, заполнил его, однако его не правильно.

Прямо сейчас это выглядит следующим образом: alt text

Я хочу, чтобы это выглядело, как это который частично жёстко. alt text

здесь является XAML

<DataTemplate x:Key="RibbonButtonDataTemplate"> 
    <ribbon:RibbonButton /> 
</DataTemplate> 

<HierarchicalDataTemplate x:Key="RibbonGroupDataTemplate" 
            DataType="{x:Type ribbon:RibbonGroup}" 
            ItemsSource="{Binding ReportsMenuCollection}" 
            ItemTemplate="{StaticResource RibbonButtonDataTemplate}"> 
    <TextBlock Text="{Binding Path=ReportDisplayName}" /> 
</HierarchicalDataTemplate> 

единственное, что мне осталось попробовать меняется мое RibbonButtonDataTemplate иерархическому DataTemplate.

ответ

0

Вам понадобятся два иерархических шаблона данных и два основных объекта привязки, которые представляют группу, и другую, которая представляет элемент. Эта же концепция применима к динамической структуре меню.

+0

Можете ли вы показать мне пример? Я использую только одну объединенную таблицу для создания структур ... id, parentid, reportname; если parentid = id, то его группа, в противном случае это дочерний элемент любого родительского ... – ecathell

+0

nm ... я перешел в другой проект, над которым я работал с иерархическими данными папок и деревом. Я должен изменить, как я работаю с корневым объектом – ecathell

+0

на самом деле обычный шаблон данных и стили работают просто отлично ... просто убедитесь, что вы максимизируете свое окно, чтобы вы могли видеть все правильно :) – ecathell

Смежные вопросы