0

您好,我需要创建表格的一部分,例如密码框(我的意思是,必须使用例如 * 隐藏文本)

这是我桌子的一部分

                      <GridViewColumn Header="Password" Width="80">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock HorizontalAlignment="Center" Text="{Binding Path=Password}"  Foreground="Black"></TextBlock>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

当我添加例如“猫”时,我会得到明确的猫,但我想得到 ***,然后如果我要引用表的这一部分,我想得到这个“猫”

谢谢帮助

4

1 回答 1

0

为什么不为每行显示固定数量的星星?这样您就不会泄露密码长度等信息。当您从不显示密码时,星数是否等于密码的长度真的很重要吗?

<TextBlock HorizontalAlignment="Center" Text="****"  Foreground="Black"></TextBlock>

如果您需要长度匹配,请编写类似的转换器:

public class StarsConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null) return null;
        var paswordLength = (value as string).Length;
        var symbol = (parameter ?? "*").ToString().First();
        return new string(symbol, paswordLength);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

在 XAML 中,您可以提供带有符号的附加参数,用于显示密码,但默认为*

 <TextBlock Text="{Binding pass,Converter={StaticResource ResourceKey=passConverter},ConverterParameter=^}" />
于 2016-11-18T22:40:42.373 回答