Создание ленты wpf во время выполнения - PullRequest
3 голосов
/ 14 декабря 2010

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

<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>

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

Вот шаблоны данных, которые я пытаюсь использовать:

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

<DataTemplate x:Key="RibbonButtonDataTemplate">
   <ribbon:RibbonButton />
</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>

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

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


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

Прямо сейчас это выглядит так: 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 на иерархический шаблон данных.

1 Ответ

0 голосов
/ 14 декабря 2010

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

...