Как добавить вкладку ленты в пользовательских элементов управления WPF с детьми
Я новичок в WPF и хотел бы создать многоразовую ленту базового меню (System.Окна.Управления.Лента). Моя цель-создать базовую структуру меню ленты (Ribbon.QuickAccessToolBar + Лента.ApplicationMenu), который является общим для всех приложений. Но я хотел бы иметь другой дочерний элемент usercontrol, который добавляет различные элементы в базовое меню (es RibbonTab + RibbonButton и т. д.). В другом посте предложите мне использовать ResourceDictionary по назначению. Поэтому я стараюсь использовать ResourceDictionary. Если я тестирую метод с помощью простых кнопок управления, он работает так, как я ожидаю.
Но если вместо этого использовать класс Button, я использую класс RibbonTab, у меня не будет такого же результата.
Может ли что-нибудь помочь мне? Большое спасибо.
Что я уже пробовал:
Я уже пробовал с Баттоном:
Dictionary3.язык XAML
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:TestUserControl" xmlns:ribbon="clr-namespace:System.Windows.Controls.Ribbon;assembly=System.Windows.Controls.Ribbon"> <Style TargetType="{x:Type local:TestBaseControl}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:TestBaseControl}"> <StackPanel> <Button>Btn1</Button> <ContentPresenter/> </StackPanel> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary>
UserControlChild2.язык XAML
<local:TestBaseControl x:Class="TestUserControl.UserControlChild2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:ribbon="clr-namespace:System.Windows.Controls.Ribbon;assembly=System.Windows.Controls.Ribbon" xmlns:local="clr-namespace:TestUserControl" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> <local:TestBaseControl.Resources> <ResourceDictionary Source = "ResourceDictionaries/Dictionary3.xaml" /> </local:TestBaseControl.Resources> <StackPanel> <Button>Btn2</Button> </StackPanel> </local:TestBaseControl>
И работает правильно. Но я стараюсь с RibbonTab:
Dictionary3.язык XAML:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:TestUserControl" xmlns:ribbon="clr-namespace:System.Windows.Controls.Ribbon;assembly=System.Windows.Controls.Ribbon"> <Style TargetType="{x:Type local:TestBaseControl}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:TestBaseControl}"> <StackPanel> <ribbon:Ribbon> <ribbon:RibbonTab Header="Home1"></ribbon:RibbonTab> <ContentPresenter/> </ribbon:Ribbon> </StackPanel> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary>
UserControlChild2.язык XAML
<local:TestBaseControl x:Class="TestUserControl.UserControlChild2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:ribbon="clr-namespace:System.Windows.Controls.Ribbon;assembly=System.Windows.Controls.Ribbon" xmlns:local="clr-namespace:TestUserControl" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> <local:TestBaseControl.Resources> <ResourceDictionary Source = "ResourceDictionaries/Dictionary3.xaml" /> </local:TestBaseControl.Resources> <StackPanel> <ribbon:RibbonTab Header="Home2"></ribbon:RibbonTab> </StackPanel> </local:TestBaseControl>
Не работает правильно.