Как заменить ResourceDictionary стороннего UserControl (в данном случае PivotViewer) - PullRequest
1 голос
/ 16 сентября 2010

Текущая версия элемента управления Microsoft Live Labs PivotViewer для SilverLight 4 не имеет возможности стилизовать элементы элемента управления.Глядя на элемент управления в Reflector, я вижу, что большая часть информации о стиле задается в ResourceDictionary в сборке (assets / defaultcolors.xaml).Я хотел бы создать собственную копию этого файла, а затем заменить ее во время выполнения на элементе управления PivotViewer.

Путем создания подкласса элемента управления PivotViewer и переопределения OnApplyTemplate я могу получить дочерние элементы и задать такие свойства, какФон.У меня не было никакого успеха Очистить () и 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);

}

1 Ответ

0 голосов
/ 16 сентября 2010

Боюсь, это не сработает в Silverlight, потому что он использует только статические ресурсы.( Стили не обновляются )

Изменение словаря ресурсов работает только до вызова InitializeComponent (), который вызывается в конструкторе PivotViewer.

Я тоже пытался стилизовать элемент управления PivotViewer.Я надеюсь, что есть и другой способ, кроме поиска по дереву визуалов и изменения свойств.

...