2016-11-18 63 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=^}" />