2010-12-14 13 views
3

ダイナミックメニューのリボンコントロールをデータバインドしようとしています。wpf構築時のリボン

<ribbon:Ribbon> 
    <ribbon:RibbonTab Header="Reports" 
     ItemsSource="{Binding ReportMenus}" 
     ItemTemplate="{StaticResource RibbonGroupDataTemplate}"> 
    </ribbon:RibbonTab> 
    <ribbon:RibbonTab Header="Test"> 
    <ribbon:RibbonGroup Header="TestGROUP" 
     ItemsSource="{Binding ReportMenus}" 
     ItemTemplate="{StaticResource RibbonButtonDataTemplate}"> 
    </ribbon:RibbonGroup> 
    </ribbon:RibbonTab> 
</ribbon:Ribbon> 

トップリボンのタブは私の「リアル」リボンタブです。一番下は手作業で作られたもので、私は自分の理論を検証しています。ここで

私が使用しようとしていますdatatemplatesです:

<Style TargetType="{x:Type ribbon:RibbonButton}"> 
    <Setter Property="Label" 
      Value="{Binding ReportDisplayName}" /> 
</Style> 

<DataTemplate x:Key="RibbonButtonDataTemplate"> 
    <ribbon:RibbonButton /> 
</DataTemplate> 

これは、グループのDataTemplateで私の最初の試みである:

<HierarchicalDataTemplate x:Key="RibbonGroupDataTemplate" DataType="{x:Type Ribbon:RibbonGroup}" 
ItemsSource="{Binding Converter={StaticResource DebugConverter}}" 
ItemTemplate="{StaticResource RibbonButtonDataTemplate}"> 
    <TextBlock Text="{Binding Path=ReportDisplayName}" /> 
</HierarchicalDataTemplate> 

それから私はこの1つしようとしていた。

<DataTemplate x:Key="RibbonGroupDataTemplate"> 
    <ribbon:RibbonGroup ItemsSource="{Binding Converter={StaticResource DebugConverter}}" 
      ItemTemplate="{StaticResource RibbonButtonDataTemplate}" /> 
</DataTemplate> 

問題は、グループの下にボタンが表示されないということです。私が2番目のリボンタブのようにgrouptemplateを持っていないと、私はそれを働かせることができます。 しかし、グループを動的に実行しようとすると、ボタンを作成できません。また、内部にribbongroupを持つデータテンプレートを実行することによって、見出しが切り取られます。私はすでにこれについて読んでおり、それがHierarchicalDatatemplateを使用しようとした理由です。 Regular Datatemplateでは、itemsourceまたはitemtemplateは使用できません。

どのように動的RibbonGroupを表示して動的RibbonButtonを表示するにはどうすればよいですか?


私はいくつかの変更を実装していますが、少なくともそれを埋め込んでいますが、それは正しくありません。私はそれが部分的にハードコードされている次のようになりたい alt text

は今のところ、それはこのようになります。 alt text

は、ここでは、XAML

<DataTemplate x:Key="RibbonButtonDataTemplate"> 
    <ribbon:RibbonButton /> 
</DataTemplate> 

<HierarchicalDataTemplate x:Key="RibbonGroupDataTemplate" 
            DataType="{x:Type ribbon:RibbonGroup}" 
            ItemsSource="{Binding ReportsMenuCollection}" 
            ItemTemplate="{StaticResource RibbonButtonDataTemplate}"> 
    <TextBlock Text="{Binding Path=ReportDisplayName}" /> 
</HierarchicalDataTemplate> 

私は、階層のDataTemplateに私のRibbonButtonDataTemplateを変えて試してみ残っている唯一のものです。

答えて

0

2つの階層型データテンプレートと2つの基本的なバインディングエンティティ(グループを表すものとアイテムを表すもの)が必要です。同じ概念が動的なメニュー構造にも当てはまります。

+0

私に例を示すことができますか?私は構造を作成するために1つの自己結合テーブルのみを使用しています... id、parentid、reportname;もしparentid = idならばグループ、それ以外の場合はparentidの子... – ecathell

+0

nm ...私はフォルダ階層データとツリービューで作業していた別のプロジェクトに行きました。病気は私がどのようにルートオブジェクトを使って作業しているのかを変更する必要があります – ecathell

+0

実際には通常のデータテンプレートとスタイルはちょうどうまくいきます...ウィンドウを最大化して、すべて正しく表示できるようにしてください:) – ecathell

関連する問題