2009-04-10 11 views
4

私はWPF Officeリボンを使用しています。そのビューがアクティブになったときにリボンに新しいアイテムを追加したいコンテンツビューがあります。新しいRibbonCommandと新しいRibbonButtonを必要なグループに追加するコードがありますが、追加すると何も起こりません。ただし、ボタンを使って新しいグループを追加すると、正常に表示され、正しくバインドされます。それが私が行方不明に更新するためにいくつかの方法がありますか?私はUpdateLayout()を試してみましたが、どちらもうまくいきません。私は本当にビューを変更するたびにすべてのグループを再構築しないようにしたいと思います。コードを使用してWPFリボンに新しいアイテムを追加する

作品:

public void InjectItems(IView view) 
{ 
var ribbonCommands = ProcessRibbonCommands(view.GetViewModel().Tasks, view.GetType()); 
var group = new RibbonGroup(); 
group.Command = new RibbonCommand() { LabelTitle = "Group Test" };    

foreach (RibbonCommand command in ribbonCommands) 
{ 
    shell.MainRibbon.Resources.Add(command.Name, command); 
    group.Controls.Add(new RibbonButton { Command = command }); 
} 

shell.MainRibbon.SelectedTab.Groups.Add(group); 
} 

は動作しません。

public void InjectItems(IView view) 
{ 
var ribbonCommands = ProcessRibbonCommands(view.GetViewModel().Tasks, view.GetType()); 
var group = shell.MainRibbon.SelectedTab.Groups[0]; //I have a default group, will fix later 

foreach (RibbonCommand command in ribbonCommands) 
{ 
    shell.MainRibbon.Resources.Add(command.Name, command); 
    group.Controls.Add(new RibbonButton { Command = command }); 
} 
} 
+0

あなたはこれを理解しましたか?私は同じ問題を抱えていますし、コードを使って既存のグループに新しい項目を追加することもできません。 –

答えて

9

私はあなたがOfficeUIサイトからMicrosoftリボンCTPを使用していると仮定しています。

ライセンス契約の一部として、あなたが従うべきスタイルのガイドラインがいくつかあります。その1つは、現在のビューに基づいてリボンの内容を追加/削除しないことです。ドキュメントから

:グループに表示

コントロールは、選択の結果として変化してはいけません。コントロールがアクティブでない場合、グループから削除されるのではなく、コントロールがグレー表示されている必要があります( )。これにより、より予測可能な エクスペリエンスが提供され、リボン上のコントロールのレイアウトがユーザーを変更したり散漫させたりすることがなくなります。

と言われているように、コンテキストタブのように聞こえるのは、まさにあなたが探しているものです。これらを無効にして有効にすることはできますが、タブの実際の内容は変更されません。

この

は、XAMLのコンテキストタブを作成するためのコードです:

<!--Context Groups--> 
     <r:Ribbon.ContextualTabGroups> 
      <!--Piece Contextual Group--> 
      <r:RibbonContextualTabGroup x:Name="grpPieceContext" Label="Piece Tools"> 
       <r:RibbonTab Label="Piece Information" Name="tabPieceContextInfo"> 
        <r:RibbonGroup Name="grpPieceDetails" Command="{StaticResource PieceInformationGrpCommand}"> 
         <r:RibbonLabel x:Name="lblPieceTag"/> 
         <r:RibbonTextBox Name="txtPieceDescription" Command="{StaticResource PieceNameTextboxCommand}" 
             TextChanged="txtPieceDescription_TextChanged" MaxLength="32"/> 
         <r:RibbonLabel x:Name="lblPieceLocation"/> 
        </r:RibbonGroup> 
       </r:RibbonTab> 
      </r:RibbonContextualTabGroup> 
     </r:Ribbon.ContextualTabGroups> 

をすることができます。このコードを経由して、アクティブおよび非アクティブなタブ:オレンジ色が

 if (!this.grpPieceContext.IsActive) 
     { 
      this.grpPieceContext.IsActive = true; 
      this.grpPieceContext.Color = Colors.Orange; 
     } 

でありますコンテキストグループの背後に座っている。

ホープこれは私がちょうど削除し、必要に応じてグループ全体のタブを再作成することになった

+0

あなたはあなたではありません! '' –

+0

@ Phil:O.o.もっと知っていると感じる? :P –

+0

いいえ!まだ間違っています。 :( –

関連する問題