Мне было интересно, как получить конкретный сеттер из объекта стиля в коде программной части в Silverlight.
У меня есть стиль S, который правильно загружен и применен к какому-то объекту. Затем во время выполнения я хочу изменить один конкретный сеттер этого стиля, скажем, его фоновый сеттер (конечно, я хочу изменить значение одного конкретного сеттера).
Для этого я просмотрел коллекцию сеттеров, которая имеет тип SetterBaseCollection и содержит все сеттеры этого стиля. Все идет нормально. Эта коллекция, кажется, включает в себя все сеттеры, как они определены в XAML, но как мне получить к ним доступ?
Когда я перебираю эту коллекцию, я имею дело с объектами типа Setter. Но я не знаю, как выбрать тот, который содержит свойство «Фон».
// this works totally fine; the variable myStyle is getting the correct Style
myStyle = this.Resources["myStyle"] as Style;
// the myStyle.Setters collection seems to contain all setters of the style
foreach (Setter s in myStyle.Setters) {
// so now what to do to get the setter that sets the Background property of my style ??
// my naive approach did not work:
if (s.Property.ToString().equals("Background")) {
// do something
}
}
(У объектов Setter действительно есть атрибут Name, который на самом деле является именно тем, что я хочу выполнить для сравнения со строкой «Background» - и отладка предложила, чтобы этот атрибут действительно содержал строку «Background». ... Но это не -общедоступный атрибут!
Было бы здорово, если бы у кого-нибудь были предложения :)
p.s. Мое местное время - 03:00, поэтому я немного устал и перегружен работой - пожалуйста, попросите меня еще раз прояснить мою проблему на случай, если у вас возникнут проблемы с угадыванием того, что мне нужно;)
Style.IsSealed
свойство истинно, и вы не можете изменить его во время выполнения. Установить значение средства настройки стиля из кода программной части во время выполнения . Изменить стиль окна во время выполнения работал на VS2008, не работает на VS2010 - person Anatolii Gabuza   schedule 08.01.2012