Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WP8工具包PhoneTextBox的密码效果?_C#_Windows Phone 8_Textbox_Passwords_Wpftoolkit - Fatal编程技术网

C# WP8工具包PhoneTextBox的密码效果?

C# WP8工具包PhoneTextBox的密码效果?,c#,windows-phone-8,textbox,passwords,wpftoolkit,C#,Windows Phone 8,Textbox,Passwords,Wpftoolkit,我想在我的WP8项目中添加一个密码文本框 最明显的方法是密码箱;但是,我想包括一个占位符,这似乎是不可能的 因此,我在WP8工具包中使用了PhoneTextBox功能,它允许一个占位符(“提示”)。但是,该功能似乎无法将该字段指定为密码字段 我想要的是小圆点而不是字符:)这是一个带有水印的密码箱的开源实现:这是我所做的。使用密码框实现小圆点的密码屏蔽效果,并使用普通文本框以浅灰色显示提示 Xaml在这里: <!--used a textbox to show waterma

我想在我的WP8项目中添加一个密码文本框

最明显的方法是密码箱;但是,我想包括一个占位符,这似乎是不可能的

因此,我在WP8工具包中使用了PhoneTextBox功能,它允许一个占位符(“提示”)。但是,该功能似乎无法将该字段指定为密码字段


我想要的是小圆点而不是字符:)

这是一个带有水印的密码箱的开源实现:

这是我所做的。使用密码框实现小圆点的密码屏蔽效果,并使用普通文本框以浅灰色显示提示

Xaml在这里:

        <!--used a textbox to show watermark and the other is a password box-->
        <TextBox x:Name="PasswordWatermark" TextWrapping="Wrap" Text="{Binding LocalizedResources.Password, Source={StaticResource LocalizedStrings}}" Foreground="{StaticResource PhoneTextBoxReadOnlyBrush}" IsHitTestVisible="False"/>
        <PasswordBox Name="PwdBox" LostFocus="PasswordBox_LostFocus" Opacity="0" GotFocus="PasswordBox_GotFocus" Password="{Binding Password, Mode=TwoWay}" BorderThickness="0" FontFamily="Segoe UI"  KeyDown="PwdBox_KeyDown" PasswordChanged="PwdBox_PasswordChanged"/>

只需确保设置边距、宽度和填充,以便这两个框完全重叠

这是密码

    /// <summary>
    /// Function to be executed when focus is on the password box.
    /// Basic function is to show the watermark in the password box.
    /// </summary>
    /// <param name="sender">object</param>
    /// <param name="e">RoutedEventArgs</param>
    private void PasswordBox_LostFocus(object sender, RoutedEventArgs e)
    {
        CheckPasswordWatermark();
    }

    /// <summary>
    /// Code checking the status of the password box and managing the watermark.
    /// </summary>
    private void CheckPasswordWatermark()
    {
        var passwordEmpty = string.IsNullOrEmpty(PwdBox.Password);
        PasswordWatermark.Opacity = passwordEmpty ? 100 : 0;
        PwdBox.Opacity = passwordEmpty ? 0 : 100;
    }

    /// <summary>
    /// Function to be executed when the password box loses focus.
    /// Basic fuction is to show the watermark in the password box.
    /// </summary>
    /// <param name="sender">object</param>
    /// <param name="e">RoutedEventArgs</param>
    private void PasswordBox_GotFocus(object sender, RoutedEventArgs e)
    {
        PasswordWatermark.Opacity = 0;
        PwdBox.Opacity = 100;
        if (!string.IsNullOrEmpty(PwdBox.Password))
        {
            PwdBox.SelectAll();
        }
    }
//
///当焦点位于密码框上时要执行的函数。
///基本功能是在密码框中显示水印。
/// 
///反对
///路由文塔
专用无效密码箱\u LostFocus(对象发送方,路由目标e)
{
CheckPasswordWatermark();
}
/// 
///检查密码框状态和管理水印的代码。
/// 
私有void CheckPasswordWatermark()
{
var passwordEmpty=string.IsNullOrEmpty(PwdBox.Password);
PasswordWatermark.Opacity=passwordEmpty?100:0;
PwdBox.Opacity=passwordEmpty?0:100;
}
/// 
///密码框失去焦点时要执行的函数。
///基本功能是在密码框中显示水印。
/// 
///反对
///路由文塔
私有无效密码箱\u GotFocus(对象发送方,路由目标)
{
PasswordWatermark.Opacity=0;
PwdBox.Opacity=100;
如果(!string.IsNullOrEmpty(PwdBox.Password))
{
PwdBox.SelectAll();
}
}

这就是我的工作原理。

您可以做的一件事是创建一个文本块覆盖,然后在顶部/单击“隐藏”。您知道这是否已在Windows Phone 8中测试过?它是在2011年末编写的。我很确定它应该可以工作,因为它似乎没有任何WP8不支持的东西。只需复制这些类,看看它是否有效。如果没有,那么改编也不难。编辑了我的代码片段。希望能有帮助。如果它对你有好处,一定要投赞成票或接受。谢谢。嗨,我试图避免在密码框上方使用文本块,但看起来这是我必须要做的。