【问题标题】:WPF Xaml Change TextBox Trigger Change ForegroundWPF Xaml 更改文本框触发器更改前景
【发布时间】:2018-08-08 13:25:43
【问题描述】:

我有一个 TextBox 样式。我正在尝试制作一个占位符(我意识到我不是第一个提出这个问题的人。)但是我发现了一种非常简单的方法可以满足我的需求。一旦用户在框中单击,“电子邮件”就会被删除。

    public  void email_input_Click(object sender, System.EventArgs e)
    {
        if(email_input.Text == "email")
        {
            email_input.Text = "";
        }
    }

现在是字体。我的默认文本颜色是灰色。当用户开始打字时,我希望它变成黑色。我是 xaml 和 wpf 的新手,无法弄清楚这样做的触发器。

    <!-- Placeholder -->
    <Style x:Key="PlaceHolder" TargetType="TextBox">
        <Setter Property="TextAlignment" Value="Center"/>
        <Setter Property="VerticalAlignment" Value="Top"/>
        <Setter Property="HorizontalAlignment" Value="Center"/>
        <Setter Property="Height" Value="30"/>
        <Setter Property="Width" Value="340"/>
        <Setter Property="FontSize" Value="16"/>
        <Setter Property="Foreground" Value="Gray"/>
        <Setter Property="Background" Value="White"/>
        <Setter Property="BorderBrush" Value="Black"/>
        <Setter Property="BorderThickness" Value="0.5"/>
        <Setter Property="FontWeight" Value="Light"/>
        <Style.Triggers>
            <Trigger Property="PreviewMouseDown" Value="True">
                <Setter Property="Foreground" Value="Black"/>
                <Setter Property="FontWeight" Value="Medium"/>
            </Trigger>
        </Style.Triggers>
    </Style>

Property="PreviewMouseDown" 无法识别或无法访问。为什么它无法访问,我可以使用什么触发器?

编辑:这似乎有效,但我不确定它有多强大。

public  void email_input_Click(object sender, System.EventArgs e)
{
    if(email_input.Text == "email")
    {
        email_input.Text = "";
    }

    email_input.Foreground = Brushes.Black;
    email_input.FontWeight = FontWeights.SemiBold;            

}

【问题讨论】:

    标签: c# wpf xaml triggers


    【解决方案1】:

    这应该是你要找的:

    <Trigger Property="IsKeyboardFocused" Value="True">
                <Setter Property="Foreground" Value="Black"/>
                <Setter Property="FontWeight" Value="Medium"/>
    </Trigger>
    

    PreviewMouseDown 不是属性,而是事件,这就是您收到消息的原因。 IsKeyboardFocused 是一个应该完成你想要的属性。有关属性列表,请参阅TextBox

    注意:一旦用户离开焦点,这也会将文本设置回灰色。如果这不是您想要的,请告诉我,我会更新此答案。

    【讨论】:

    • 非常感谢,一旦 TextBox 不再是焦点,我该如何保留这些属性?
    • 我希望它保持黑色。很像使用 HTML5 登录页面
    • 第一次初始化窗口的时间
    • @Mwspencer 如果您只希望它在初始化时显示为灰色,那么您可以在email_input_Click 事件中将前景色设置为黑色。
    • 感谢我花了一些时间找到我正在寻找的合适的房产。 (字体粗细)。如果有人要写一本比较 HTML 和 XAML 的书,我会是第一个购买的人:)
    猜你喜欢
    • 2013-01-29
    • 2014-05-19
    • 2015-02-20
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多