SilverLight 4的当前版本的Microsoft Live Labs PivotViewer控件无法设置控件元素的样式。看一下Reflector中的控件,我可以看到很多样式信息都是在程序集中的ResourceDictionary中设置的(assets / defaultcolors.xaml)。我想要做的是创建我自己的这个文件的副本,然后在运行时在PivotViewer控件上替换它。
通过继承PivotViewer控件并覆盖OnApplyTemplate,我可以获取子元素并设置背景等属性。我没有成功Clear()使用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);
}
答案 0 :(得分:0)
我担心这不会在Silverlight中起作用,因为它只使用静态资源。 (Styles Don't Update)
更改资源字典仅在调用InitializeComponent()之前有效,该调用在PivotViewer的构造函数中调用。
我一直在试图调整PivotViewer控件的样式。我希望除了搜索Visual Tree和更改属性之外还有另一种方法。