1

SilverLight4用のMicrosoftLiveLabs PivotViewerコントロールの現在のバージョンには、コントロールの要素のスタイルを設定する方法がありません。Reflectorのコントロールを見ると、スタイル情報の多くがアセンブリのResourceDictionary(assets / defaultcolors.xaml)に設定されていることがわかります。私がやりたいのは、このファイルの独自のコピーを作成し、実行時にPivotViewerコントロールでそれを置き換えることです。

PivotViewerコントロールをサブクラス化し、OnApplyTemplateをオーバーライドすることで、子要素を取得し、Backgroundなどのプロパティを設定できます。私はMergedDictionariesをClear()'ngして、自分で追加することに成功していません。

public override void OnApplyTemplate() {
base.OnApplyTemplate();

/* can change things this way */
CollectionViewerView cvv = ((CollectionViewerView)((Grid)this.GetTemplateChild("PART_Container")).Children[0]);
((Grid)cvv.Content).Background = new SolidColorBrush(Colors.Black);

/* can't change things this way */
CustomDictionary gd = new CustomDictionary();
cvv.Resources.MergedDictionaries.Clear();
cvv.Resources.MergedDictionaries.Add(gd);

}

4

1 に答える 1

0

静的リソースのみを使用するため、Silverlightでは機能しないのではないかと思います。(スタイルは更新されません

リソースディクショナリの変更は、Pivo​​tViewerのコンストラクターで呼び出されるInitializeComponent()が呼び出される前にのみ機能します。

私もPivotViewerコントロールのスタイルを設定しようとしています。ビジュアルツリーを検索してプロパティを変更する以外に、別の方法があることを願っています。

于 2010-09-16T08:13:27.667 に答える