2016-11-18 2 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}"'대신 변환기를 사용할 수 있습니다.이 변환기는 바운드 문자열과 길이가 같은 문자열을 반환합니다. –

답변

0

왜 각 행마다 고정 된 양의 별을 표시하지 않습니까? 이렇게하면 암호 길이와 같은 정보가 누출되지 않습니다. 별표 수가 암호를 보여주지 않을 때 암호의 길이와 같으면 정말 중요합니까?

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 HorizontalAlignment="Center" Text="****" Foreground="Black"></TextBlock> 

당신은 유사한 컨버터를 쓰기 다음에 맞게 길이를 필요

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