2017-02-23 64 views
-1

回購:https://github.com/babakin34/ribbontest1/是否可以將Ribbon或RibbonTab放入單獨的xaml文件中?

我有一個Main.xamlMyRibbon.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> 

的問題是,一個空的色帶在網格顯示。 (上傳菜單misisng)

這裏是整個項目的快照:

enter image description here

+0

有什麼所示。如果您有' '? – user5226582

+0

是的,如果我直接在Main.xaml中添加MyRibbon.xaml的內容,我會得到預期的結果。 –

+0

我對wpf並不熟悉,但也許會讓MyRibbon類公開? – user5226582

回答

1

還有就是你MyRibbon類和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> 

另一種選擇是簡單地創建一個UserControl稱爲MyRibbon,把你的XAML標記在MyRibbon.xaml文件中。然後,您可以使用UserControl這樣的:

<local:MyRibbon /> 
  1. 創建一個新的用戶控件(項目 - >添加新用品 - >用戶控件(WPF),並命名爲 「MyRibbon」

  2. 更換該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> 
    
  3. 變化MyRibbon.xaml.cs基類:

    public partial class MyRibbon : System.Windows.Controls.Ribbon.Ribbon 
    { 
        public MyRibbon() 
        { 
         InitializeComponent(); 
        } 
    } 
    
  4. 將控制權添加到您的Main中。XAML:

    <local:MyRibbon /> 
    

enter image description here

+0

我正在使用第二種方法並在沒有上載菜單的情況下獲取空的功能區。 –

+0

如果您有一個名爲MyRibbon.xaml的文件和另一個名爲MyRibbon.cs的文件,則不使用第二種方法。請再次閱讀我的回答,並嘗試創建一個UserControl。 – mm8

+0

請參閱我編輯的答案。 – mm8

0

這對我的作品。 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> 
+0

你的MyRibbon.cs是怎樣的? –

+0

yes,MyRibbon.xaml.cs –

+0

using System.Windows.Controls.Ribbon; namespace XFWPF.WPF.View { public partial class MyRibbon:Ribbon { public MyRibbon(){ InitializeComponent(); } } } –

相關問題