0

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 では、この「pointer: text」のようにカーソルを変更します。

XAMLでこれを行うにはどうすればよいですか?

また、押されたときにフォーカスを背景のテキストボックスに移動したい場合は、テキストブロックの gotfocus イベントをインターセプトし、コード内でフォーカスをテキストボックスに渡すのが最善の方法です。iOS では、単にイベントを通過するレイヤーを使用できると思います。

どうもありがとうロンドンでいつも言っているように、あなたにとても感謝しています;-)

4

3 に答える 3

2

WinRT XAML Toolkit の WatermarkTextBoxを確認することをお勧めします。

于 2012-08-01T18:22:07.100 に答える
0

デフォルトのテキストを何かに設定し、フォーカスイベントを取得したら、ユーザーが入力したテキストをクリアします。LostFocus の場合は、透かしを再度配置します。このソリューションでは、IBeam カーソルは問題になりません。

于 2012-08-01T17:43:14.290 に答える
0

より簡単な解決策は、デフォルトのテキスト (透かしとして機能する) を TextBox に設定することです。GotFocus イベントで、コード ビハインドからテキストをクリアします。LostFocus イベントで、ユーザーがテキストを入力したかどうか、または TextBox が空かどうかを確認します。ユーザーテキストが含まれている場合は、そのままにしておきます。空の場合は、透かしテキストを元に戻してください!

于 2013-04-10T10:38:37.403 に答える