【问题标题】:Changing foreground color of a TextBox control更改 TextBox 控件的前景色
【发布时间】:2012-01-06 19:26:15
【问题描述】:

也许这个问题有点傻,但我不知道如何解决以下(也许是微不足道的)问题:

我只想更改 Silverlight 4 中 TextBox 控件的前景色,以便在“正常”状态下它是黑色,而在“禁用”状态下它应该是红色。

到目前为止,我做了以下事情:我正在编辑控件 ControlTemplate 以使用 Blend 4 中的 Visual State Manager 来操作 TextBox 的视觉状态,但是因为 textBox 中的文本被实现为它的 contentControl 我找不到任何foreground 属性用于更改颜色或将其分别链接到特定的视觉状态。

再次,我只是想为 TextBox 的不同视觉状态设置不同的前景色。

谁能帮帮我?提前谢谢你!

【问题讨论】:

    标签: c# silverlight expression-blend controltemplate


    【解决方案1】:

    您可以做几件事,您可以删除 contentpresenter 并将其替换为文本块,然后选择 TextBlock 转到您的 Common Properties -> Text 并单击它旁边的小方块并选择 Template Binding -> Content这只是将内容的模板绑定添加到控件。

    或者一种快速简单的方法是将其包装在用户控件中并将您的更改应用于它而不是像

    <UserControl>
    <ContentPresenter....
    </UserControl>
    

    然后只需选择用户控件对象,瞧,您可以设置前景等。

    【讨论】:

    • 嘿 Chris W. :) 感谢您的快速回复。你的答案正是我想要的。我只是删除了 ContentControl,用普通的 TextBlock 替换它,世界又开始旋转了;)
    • 不用担心,很高兴它有所帮助,无论如何,所有这些都在运行时呈现为文本块,这个技巧经常派上用场。祝你好运!
    【解决方案2】:

    在禁用状态下,您可以设置内容控件的 Foreground 属性(如果模板不包含内容控件,您可以将其包裹在内容呈现器周围):

    <Storyboard>
        <ObjectAnimationUsingKeyFrames BeginTime="0"
                                       Storyboard.TargetName="contentControl"
                                       Storyboard.TargetProperty="Foreground">
            <DiscreteObjectKeyFrame Value="Red" KeyTime="0" />
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      相关资源
      最近更新 更多