1

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);

}

4

1 回答 1

0

恐怕这在 Silverlight 中行不通,因为它只使用静态资源。(样式不更新

更改资源字典仅在调用 InitializeComponent() 之前有效,该方法在 PivotViewer 的构造函数中调用。

我也一直在尝试设置 PivotViewer 控件的样式。我希望有另一种方法,除了搜索可视树和更改属性。

于 2010-09-16T08:13:27.667 回答