Установить значение Setter Set из кода позади во время выполнения - PullRequest
1 голос
/ 21 декабря 2011

В silverlight существует известная ошибка каретки текстового поля, которая обсуждается здесь: http://forums.silverlight.net/p/165276/423268.aspx

В качестве обходного пути используется прикрепленное поведение, позволяющее явно указать цвет для каретки TextBox.

Поэтому у меня есть следующий установщик в моем стиле TextBox:

<Style x:Key="NameEditStyle" TargetType="TextBox">
            <Setter Property="Utilities:FixCaretBrushBehavior.CaretBrush" Value="White" />

Мое приложение работает на Windows Phone, где для TextBoxes могут быть как белые, так и черные фоны.Мне нужно условно изменить, будет ли каретка выглядеть белой или черной.(что эквивалентно установке Value свойства).

Как можно условно изменить это конкретное свойство в установщике стиля из кода?

Я попытался присвоить свойству x: Имя и пытается ссылаться на него в коде позади, но свойство всегда null, поэтому я не могу изменить его значение.

1 Ответ

2 голосов
/ 22 декабря 2011

В WPF / SL / WP7 нет способа изменить стиль после его загрузки, поскольку Style.IsSealed будет иметь значение true. Что вы можете сделать, это создать новый стиль на основе старого и изменить стиль TextBoxes на новый стиль:

<Style x:Key="NameEditStyle" TargetType="TextBox">
    <Setter Property="Utilities:FixCaretBrushBehavior.CaretBrush" Value="White" />
    ...
</Style>

<Style x:Key="BlackNameEditStyle" TargetType="TextBox" BasedOn="{StaticResource NameEditStyle}">
    <Setter Property="Utilities:FixCaretBrushBehavior.CaretBrush" Value="Black" />
</Style>

В качестве альтернативы вы также можете создать этот новый стиль во время выполнения, как описано здесь в статье .

...