Изменение <Style>из кода - PullRequest
       2

Изменение <Style>из кода

0 голосов
/ 20 декабря 2010

Мне нужно изменить стиль в ресурсах из кода.Я уже знаю, что могу получить доступ к сеттерам следующим образом:

 Style st = (Style)this.Resources["myStyle"];
 set.Setters.Etc...

Но мне нужно изменить значение определенного сеттера в этом стиле.Есть ли способ сделать это?

Кроме того, как я могу получить соответствующий установщик в списке сеттеров на основе «Свойство»

спасибо

Ответы [ 2 ]

2 голосов
/ 20 декабря 2010

Возможно, это не самый «чистый» способ, но я обнаружил кое-что, что действительно работает:

Style myStyle = (Style)this.Resources["myStyle"];

SetterBase sb = myStyle.Setters.FirstOrDefault(z => (z as Setter).Property == Rectangle.FillProperty);
int iSetterIndex = myStyle.Setters.IndexOf(sb);

myStyle.Setters[iSetterIndex] = new Setter(Rectangle.FillProperty, newScrollThumbBackground);

Кажется, я не могу заменить значение установщика, поэтому вместо этого я просто нахожу старый индекс установщика, используя свойство. Затем замените установщик в найденном индексе новым объектом Сеттера.

0 голосов
/ 20 декабря 2010

Что-то вроде этого должно сделать:

SetterBase sb = style.Setters[0];
Setter s = (Setter)sb;
s.TargetName = "abcd";

(по крайней мере, в WPF)

Edit:
В Silverlight нет TargetName, но вы все равно можете получить доступ к Property и Value. Итак, вы говорите что-то вроде if (s.Property == Button.IsEnabled) s.Value = false;.

Edit:
О, вы сами нашли лучшее решение. :-) Не знал, что нельзя поменять Value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...