2016-11-18 4 views
0

Bonjour je dois créer une partie de ma table être comme PasswordBox (je veux dire, texte doit être cacher en utilisant par exemple *)WPF TABLEAU DE MODIFICATION -Textblock comme PasswordBox

Cela fait partie de ma table

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

quand j'ajouterai par exemple "chat", j'obtiendrai chat explicite mais je veux obtenir ***, et alors si je me rapporterai à cette partie de table je veux obtenir ce 'chat'

thx pour l'aide

+0

Vous pouvez utiliser un convertisseur au lieu de 'Text =" {Binding Path = Password} "', qui renvoie une chaîne de longueur égale avec la chaîne Bound. –

Répondre

0

Pourquoi ne pas afficher une quantité fixe d'étoiles pour chaque rangée? De cette façon, vous ne révélez pas d'informations telles que la longueur du mot de passe. Est-ce vraiment important si le nombre d'étoiles est égal à la longueur du mot de passe lorsque vous ne le montrez jamais?

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

Si vous avez besoin de longueur pour correspondre alors écrire convertisseur similaire:

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(); 
    } 
} 

en XAML vous pouvez fournir des paramètres supplémentaires avec le symbole qui est utilisé pour afficher le mot de passe, mais il sera par défaut *

<TextBlock Text="{Binding pass,Converter={StaticResource ResourceKey=passConverter},ConverterParameter=^}" />