0

リボンに RibbonControlsLibrary (.Net 4.0) を使用しています。私の実装は、MVVM を使用して完全に実現されています。今、私はサイズ変更機能の利点を利用したいと思っています。しかし、グループ ボックスの縮小順序を設定できません。これは、グループ ボックスの名前を特別な順序で定義する必要があるためです。データ テンプレートを使用しているため、グループ ボックスの名前を設定できません。リボン グループ ボックスのユーザー コントロールの名前をデータ コンテキストのプロパティにバインドしようとしましたが、うまくいきません。

リボン グループ ボックスのユーザー コントロール名をデータ コンテキストのプロパティに設定する機会はありますか?

4

1 に答える 1

0

RibbonGroupsの名前を設定する

他の解決策があるかもしれませんが、私の場合は、OnAttachedメソッドでRibbonGroupの名前を設定する動作を実装することです。

public class RibbonGroupNameBehavior : Behavior<RibbonGroup>
{
    protected override void OnAttached()
    {
        base.OnAttached();

        GroupeCommandesViewModel groupeCommandesViewModel = this.AssociatedObject.DataContext as GroupeCommandesViewModel;
        if (groupeCommandesViewModel != null)
        {
            this.AssociatedObject.Name = groupeCommandesViewModel.Nom;
        }
    }
}

割り当ての周りにtry-catchブロックを追加することをお勧めします...

ビヘイビアを使用する

DataTemplatesを使用しているので、スタイルを使用して動作をRibbonGroupsに割り当てる必要があると思います。私はこのソリューションをうまく使っています。ご覧のとおり、私の動作のコードは必要な依存関係プロパティを提供していません。追加する必要があります。

これが私の短縮リボンのスタイルです:

<r:Ribbon.Style>
    <Style TargetType="{x:Type r:Ribbon}">
        <Setter Property="ItemContainerStyle">
            <Setter.Value>
                <Style TargetType="{x:Type r:RibbonTab}">
                    <Setter Property="ItemsSource" Value="{Binding ListeCommandes, Converter={StaticResource CommandesToGroupesConverter}}" />
                    <Setter Property="GroupSizeReductionOrder" Value="{Binding ListeCommandesOrdreRedimensionnement}" />
                    <Setter Property="ItemContainerStyleSelector">
                        <Setter.Value>
                            <ribbonVM:RibbonGroupStyleSelector>
                                <ribbonVM:RibbonGroupStyleSelector.GenericStyle>
                                    <Style TargetType="{x:Type r:RibbonGroup}" BasedOn="{StaticResource RibbonGroupStyle}" />
                                </ribbonVM:RibbonGroupStyleSelector.GenericStyle>
                            </ribbonVM:RibbonGroupStyleSelector>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Setter.Value>
        </Setter>
    </Style>
</r:Ribbon.Style>

そして私のRibbonGroupのスタイル:

<Style x:Key="RibbonGroupStyle"  TargetType="{x:Type r:RibbonGroup}" BasedOn="{StaticResource RibbonControlStyle}">
    <Setter Property="Header"       Value="{Binding Libellé}" />
    <Setter Property="ItemsSource"  Value="{Binding Commandes}" />

    <Setter Property="CanAddToQuickAccessToolBarDirectly" Value="False" />

    <Setter Property="ihm_behaviors:RibbonGroupNameBehavior.IsEnabled" Value="True" />
</Style>

GroupSizeReductionOrderプロパティのデータバインディング

GroupSizeReductionOrderプロパティの定義を見ると、TypeConverterStringCollectionConverterを持つStringCollectionであることがわかります。私が見たところ、このコンバーターは文字列からStringCollectionにのみ変換します。したがって、プロパティは文字列またはStringCollectionのいずれかである必要があります。

于 2013-02-26T18:07:30.273 に答える