【问题标题】:Set Style Setter value from code-behind at runtime在运行时从代码隐藏设置样式设置器值
【发布时间】:2011-12-21 17:08:27
【问题描述】:

在 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 上运行,其中 TextBox 可以有白色和黑色背景。我需要有条件地修改插入符号是否会从白色变为黑色。 (相当于设置了一个Value的属性)。

如何从代码有条件地更改样式设置器中的这个特定属性?

我尝试给属性一个 x:Name 并尝试在代码隐藏中引用它,但该属性始终为 null,所以我无法调整它的值。

【问题讨论】:

    标签: .net silverlight windows-phone-7 styling


    【解决方案1】:

    在 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 中所述。

    【讨论】:

      猜你喜欢
      • 2019-11-15
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多