SilverLight 4 的 Microsoft Live Labs PivotViewer 控件的当前版本无法设置控件元素的样式。查看 Reflector 中的控件,我可以看到大部分样式信息是在程序集 (assets/defaultcolors.xaml) 的 ResourceDictionary 中设置的。我想做的是创建我自己的这个文件的副本,然后在运行时在 PivotViewer 控件上替换它。
通过继承 PivotViewer 控件并覆盖 OnApplyTemplate,我可以获取子元素并设置背景等属性。我没有任何成功 Clear()'ng MergedDictionaries 并添加了我自己的:
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);
}