0

RibbonComboBox の SelectedItemをバインドする際の問題について説明しました。このコントロールのスタイルを設定しようとすると、別の非常に厄介な問題が発生します。

上記の投稿のスタイル設定されていない ComboBox から始めます。

<r:RibbonComboBox >
    <r:RibbonGallery SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
        <r:RibbonGalleryCategory ItemsSource="{Binding Controls}" DisplayMemberPath="Caption" />
    </r:RibbonGallery>
</r:RibbonComboBox>

期待される結果が得られます:

ここに画像の説明を入力

ただし、Microsoft Blend (VS 2012 のプレビュー) を使用してスタイルを適用すると、Object | スタイルを編集 | コピーを編集... (Blend または Visual Studio を使用してテンプレートのみをコピーしても同じ効果があります):

ここに画像の説明を入力

選択したアイテムが正しく表示されなくなります - DisplayMemberPath プロパティの代わりに、型名が表示されます。ドロップダウンの項目はまだ正しいです。スタイルをまだ変更していないことに注意してください。この問題を引き起こすのは、抽出されるデフォルトのスタイル/テンプレートです。

<r:RibbonComboBox Style="{DynamicResource RibbonComboBoxStyle1}" >

ここに画像の説明を入力

また、RibbonComboBox の ItemContainerStyle にはターゲット タイプの RibbonMenuItem があり、実際の RibbonGalleryItems に影響を与えないように見えるため、ドロップダウン項目のスタイルを設定するのにも問題がありました (主にマウスオーバーの背景の cornerradius を変更したかった)。

  1. RibbonComboBox スタイルを修正するには?
  2. Blend/VS 経由で RibbonGalleryItem スタイルにアクセスするにはどうすればよいですか?
4

2 に答える 2

0

現在、ILSpy を使用して、RibbonControlsLibrary.dll (Resources/RibbonControlsLibrary.g.resources/themes/generic.baml) からデフォルトの RibbonComboBox スタイルを直接抽出することで、この問題を解決しました。

スタイルは同じファイル内の他の StaticResources を参照するため、これは面倒な作業です。そのため、それらも検索して抽出する必要があります。

同じことがRibbonGalleryItemスタイルにも当てはまり、このように抽出できますが、BlendまたはVisual Studioを使用した「よりクリーンな」ソリューションをお勧めします。

于 2013-03-25T13:01:30.737 に答える
0

JetBrains dotPeek decompilerをご覧になることをお勧めします。

その機能の1つは次のとおりです。

「... .baml ファイルを逆コンパイルして、XAML UI 定義を再構築できるようにします。」

さらに、元の Microsoft .XAML テーマを含むリボン ライブラリ全体を逆コンパイルした上記の逆コンパイラを使用して、視覚的な RibbonCombobox とその関連コントロールの編集を完了しました。

于 2015-12-08T18:49:08.177 に答える