是否可以将功能区或功能区选项卡放在单独的 xaml 文件中?
Is it possible to put a Ribbon or RibbonTab in seperate xaml file?
回购:https://github.com/babakin34/ribbontest1/
我有一个Main.xaml和一个MyRibbon.xaml.
MyRibbon.xaml
<ribbon:Ribbon xmlns:ribbon="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<ribbon:RibbonTab Header="">
<ribbon:RibbonMenuButton Label="Upload"/>
</ribbon:RibbonTab>
</ribbon:Ribbon>
MyRibbon.xaml.cs
public class MyRibbon : Ribbon {}
Main.xaml
<Grid>
<MyRibbon/>
</Grid>
问题是网格中显示了一个空的功能区。 (上传菜单有误)
这是整个项目的快照:
这对我有用。
MyRibbon.xaml:
<ribbon:Ribbon x:Class="XFWPF.WPF.MyRibbon"
xmlns:ribbon="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ribbon:RibbonTab Header="">
<ribbon:RibbonMenuButton Label="Upload"/>
</ribbon:RibbonTab>
</ribbon:Ribbon>
Main.xaml:请注意,uc对应MyRibbon(XFWPF.WPF).
的命名空间
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<uc:MyRibbon/>
</Grid>
您的 MyRibbon
class 和 MyRibbon.xaml
文件之间没有自动连接。
如果你想创建自定义控件,你应该为它定义一个模板:
public class MyRibbon : Ribbon {}
<Grid xmlns:ribbon="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Grid.Resources>
<Style TargetType="local:MyRibbon">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:MyRibbon">
<ribbon:Ribbon>
<ribbon:RibbonTab Header="">
<ribbon:RibbonMenuButton Label="Upload"/>
</ribbon:RibbonTab>
</ribbon:Ribbon>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<local:MyRibbon/>
</Grid>
另一种选择是简单地创建一个名为 MyRibbon 的 UserControl
并将您的 XAML 标记放入 MyRibbon.xaml 文件中。然后,您可以像这样使用 UserControl
:
<local:MyRibbon />
创建一个新的用户控件(项目->添加新项->用户控件(WPF)并将其命名为"MyRibbon"。
将 MyRibbon.xaml 文件的内容替换为以下内容:
<Ribbon x:Class="WpfApplication3.MyRibbon"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<RibbonTab Header="">
<RibbonMenuButton Label="Upload"/>
</RibbonTab>
</Ribbon>
更改 MyRibbon.xaml.cs 中的基数 class:
public partial class MyRibbon : System.Windows.Controls.Ribbon.Ribbon
{
public MyRibbon()
{
InitializeComponent();
}
}
将控件添加到您的 Main.xaml:
<local:MyRibbon />
回购:https://github.com/babakin34/ribbontest1/
我有一个Main.xaml和一个MyRibbon.xaml.
MyRibbon.xaml
<ribbon:Ribbon xmlns:ribbon="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<ribbon:RibbonTab Header="">
<ribbon:RibbonMenuButton Label="Upload"/>
</ribbon:RibbonTab>
</ribbon:Ribbon>
MyRibbon.xaml.cs
public class MyRibbon : Ribbon {}
Main.xaml
<Grid>
<MyRibbon/>
</Grid>
问题是网格中显示了一个空的功能区。 (上传菜单有误)
这是整个项目的快照:
这对我有用。 MyRibbon.xaml:
<ribbon:Ribbon x:Class="XFWPF.WPF.MyRibbon"
xmlns:ribbon="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ribbon:RibbonTab Header="">
<ribbon:RibbonMenuButton Label="Upload"/>
</ribbon:RibbonTab>
</ribbon:Ribbon>
Main.xaml:请注意,uc对应MyRibbon(XFWPF.WPF).
的命名空间<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<uc:MyRibbon/>
</Grid>
您的 MyRibbon
class 和 MyRibbon.xaml
文件之间没有自动连接。
如果你想创建自定义控件,你应该为它定义一个模板:
public class MyRibbon : Ribbon {}
<Grid xmlns:ribbon="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Grid.Resources>
<Style TargetType="local:MyRibbon">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:MyRibbon">
<ribbon:Ribbon>
<ribbon:RibbonTab Header="">
<ribbon:RibbonMenuButton Label="Upload"/>
</ribbon:RibbonTab>
</ribbon:Ribbon>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<local:MyRibbon/>
</Grid>
另一种选择是简单地创建一个名为 MyRibbon 的 UserControl
并将您的 XAML 标记放入 MyRibbon.xaml 文件中。然后,您可以像这样使用 UserControl
:
<local:MyRibbon />
创建一个新的用户控件(项目->添加新项->用户控件(WPF)并将其命名为"MyRibbon"。
将 MyRibbon.xaml 文件的内容替换为以下内容:
<Ribbon x:Class="WpfApplication3.MyRibbon" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <RibbonTab Header=""> <RibbonMenuButton Label="Upload"/> </RibbonTab> </Ribbon>
更改 MyRibbon.xaml.cs 中的基数 class:
public partial class MyRibbon : System.Windows.Controls.Ribbon.Ribbon { public MyRibbon() { InitializeComponent(); } }
将控件添加到您的 Main.xaml:
<local:MyRibbon />