2016-11-18 57 views
0

您好,我需要创建我的表的一部分,像passwordbox(我的意思是,文本必须隐藏使用例如*)WPF表修改-Textblock像passwordbox

这是我的表的一部分

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

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

thx求助

+0

您可以使用转换器而不是'Text =“{Binding Path = Password}”',它会返回一个长度与Bound字符串相等的字符串。 –

回答

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=^}" />