在silverlight中,这里讨论了一个已知的文本框插入错误:http://forums.silverlight.net/p/165276/423268.aspx
作为一种变通方法,使用附加行为,允许明确指定TextBox插入符的颜色。
因此我的TextBox样式中有以下setter:
<Style x:Key="NameEditStyle" TargetType="TextBox">
<Setter Property="Utilities:FixCaretBrushBehavior.CaretBrush" Value="White" />
我的应用程序在Windows Phone上运行,其中TextBox可以有白色和黑色背景。我需要有条件地修改插入符号是否显示为白色到黑色。 (相当于设置属性的Value
。
如何从代码中有条件地更改样式设置器中的此特定属性?
我试过给一个属性x:Name并试图在代码隐藏中引用它,但属性总是null
,所以我无法调整它的值。
答案 0 :(得分:2)
WPF / SL / WP7中没有办法在加载后更改样式,因为Style.IsSealed将为真。 你可以做的是创建基于旧样式的新样式并将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>
或者,您也可以在运行时创建此新样式,如article中所述。