【问题标题】:Watermark in a TextBlock文本块中的水印
【发布时间】:2012-08-01 08:49:43
【问题描述】:

我正在尝试让水印出现在 TexBox 中,我使用 Canvas 标记完成了此操作:

            <Canvas Height="60" Width="500" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,5">
            <TextBox Width="500" Height="30" Canvas.Left="0" Canvas.Top="0" FontSize="18"></TextBox>
            <TextBlock x:Name="whereAreyouWatermark" Canvas.Left="15" Canvas.Top="7" Height="30" FontSize="16" 
                       Foreground="#777777" Width="500">
                <Run x:Uid="text2"></Run> <Italic FontSize="13"><Run x:Uid="text3"></Run></Italic>
            </TextBlock>
        </Canvas>

但是,现在当光标移到文本块上时,它不是“I”图标,而是一个普通的指针。在 CSS 中,我会像这样“指针:文本”更改光标。

如何在 XAML 中执行此操作?

另外,当按下时我希望焦点转到背景文本框,我认为最好的方法是拦截文本块的 gotfocus 事件并将焦点代码传递给文本框。我认为在 iOS 中你可以使用一个简单地通过事件的层。

非常感谢 非常感谢你,正如我们在伦敦一直说的那样;-)

【问题讨论】:

  • 水印是什么意思?单击文本时文本框内的文本像网站文本框一样消失了吗?
  • 是的,没错。因此,覆盖一个文本块并设置文本块的样式,使 IBeam 光标在鼠标悬停时仍然保留。

标签: xaml windows-8 microsoft-metro winrt-xaml


【解决方案1】:

【讨论】:

    【解决方案2】:

    将默认文本设置为某些内容,一旦获得焦点事件,使用用户键入的任何内容清除文本。当它是 LostFocus 时,再次放置水印。使用此解决方案,您的 IBeam 光标不会有问题。

    【讨论】:

      【解决方案3】:

      更简单的解决方案是为 TextBox 设置一些默认文本(将用作水印)。在 GotFocus 事件中,清除后面代码中的文本。在 LostFocus 事件中,检查用户是否输入了一些文本或 TextBox 是否为空。如果它有一些用户文本,那就顺其自然吧。如果为空,则放回水印文字!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-10
        • 1970-01-01
        • 1970-01-01
        • 2015-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多