Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以将Ribbon或RibbonTab放在单独的xaml文件中?_C#_Wpf_Xaml_Ribbon - Fatal编程技术网

C# 是否可以将Ribbon或RibbonTab放在单独的xaml文件中?

C# 是否可以将Ribbon或RibbonTab放在单独的xaml文件中?,c#,wpf,xaml,ribbon,C#,Wpf,Xaml,Ribbon,回购: 我有一个Main.xaml和一个MyRibbon.xaml 肉豆蔻 <ribbon:Ribbon xmlns:ribbon="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <ribbon:RibbonTab Header=""> <ribbon:RibbonMenuButton Label="Upload"/> </ribbon:Ribbon

回购:

我有一个Main.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>
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)


您的
MyRibbon
类与
MyRibbon.xaml
文件之间没有自动连接

如果要创建自定义控件,应为其定义模板:


  • 创建一个新的用户控件(项目->添加新项->用户控件(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>
    
  • 将控件添加到Main.xaml:

    <local:MyRibbon />
    
    
    

  • 如果您有
    ,是否会显示任何内容?是的,如果我将MyRibbon.xaml的内容直接添加到Main.xaml中,我会得到预期的结果。我不熟悉wpf,但可能会将
    MyRibbon
    类公开?MyRibbon类公开。MyRibbon.cs看起来如何?使用System.Windows.Controls.Ribbon;命名空间XFWPF.WPF.View{public partial class MyRibbon:Ribbon{public MyRibbon(){InitializeComponent();}}}}}关于我的信息,您没有收到编译错误吗?据我所知,您需要为它提供xmlns标记。您确定可以看到“Upload”吗菜单?我得到一个空功能区。我正在使用第二种方法,并在没有上载菜单的情况下获得一个空功能区。如果您有一个名为MyRibbon.xaml的文件和另一个名为MyRibbon.cs的文件,则不使用第二种方法。请再次阅读我的answeer并尝试创建一个UserControl。我正在按照您的建议进行操作,但上载菜单除外是Missing。请再次检查我的问题,我添加了整个项目的屏幕截图。当您将MyRibbon的内容设置为“下载”RibbonTab时,您正在覆盖它的内容。没关系。当我删除下载菜单并使用时,我仍然看不到任何上载菜单。
    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>
    
    <local:MyRibbon />
    
    <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>
    
    public partial class MyRibbon : System.Windows.Controls.Ribbon.Ribbon
    {
        public MyRibbon()
        {
            InitializeComponent();
        }
    }
    
    <local:MyRibbon />