2013-06-25 121 views
0

我正在使用WPF扩展工具包,并且我想知道是否可以隐藏屏蔽,然后在用户输入时,MaskedTextBox开始屏蔽文本。屏蔽文本框 - 隐藏屏蔽

默认设置是将掩码显示为文本。例如,掩码是

(99)999-9999 

默认的文本将是:

(__)___-____ 

我想空白文本,就像一个JavaScript的面具。

编辑:

我已经试图改变ClipboardMaskFormat为 “ExcludePromptAndLiterals” 和 “HidePromptOnLeave” 为真,但不工作。

回答

2

我猜你可以做这Behavior<MaskedTextBox>

类似:

public class MaskVisibilityBehavior : Behavior<MaskedTextBox> { 
    private FrameworkElement _contentPresenter; 

    protected override void OnAttached() { 
    base.OnAttached(); 
    AssociatedObject.Loaded += (sender, args) => { 
     _contentPresenter = AssociatedObject.Template.FindName("PART_ContentHost", AssociatedObject) as FrameworkElement; 
     if (_contentPresenter == null) 
     throw new InvalidCastException(); 
     AssociatedObject.TextChanged += OnTextChanged; 
     AssociatedObject.GotFocus += OnGotFocus; 
     AssociatedObject.LostFocus += OnLostFocus; 
     UpdateMaskVisibility(); 
    }; 
    } 

    protected override void OnDetaching() { 
    AssociatedObject.TextChanged -= OnTextChanged; 
    AssociatedObject.GotFocus -= OnGotFocus; 
    AssociatedObject.LostFocus -= OnLostFocus; 
    base.OnDetaching(); 
    } 

    private void OnLostFocus(object sender, RoutedEventArgs routedEventArgs) { 
    UpdateMaskVisibility(); 
    } 

    private void OnGotFocus(object sender, RoutedEventArgs routedEventArgs) { 
    UpdateMaskVisibility(); 
    } 

    private void OnTextChanged(object sender, TextChangedEventArgs textChangedEventArgs) { 
    UpdateMaskVisibility(); 
    } 

    private void UpdateMaskVisibility() { 
    _contentPresenter.Visibility = AssociatedObject.MaskedTextProvider.AssignedEditPositionCount > 0 || 
            AssociatedObject.IsFocused 
             ? Visibility.Visible 
             : Visibility.Hidden; 
    } 
} 

与用法:

<xctk:MaskedTextBox Mask="(000) 000-0000" 
        ValueDataType="{x:Type s:String}"> 
    <i:Interaction.Behaviors> 
    <local:MaskVisibilityBehavior /> 
    </i:Interaction.Behaviors> 
</xctk:MaskedTextBox> 

现在MaskedTextBox提示格式才可以看到无论是当它有重点或它有任何有效的Value

0

我有类似的问题。我需要删除所有的“_”字符,所以当他/她在maskedtextbox中键入IP时,客户端不会感到困惑。我所做的是

<wpx:MaskedTextBox IncludePromptInValue="True" IncludeLiteralsInValue="False" Mask="000,000,000,000" PromptChar=" "/> 

我设置PromptChat为“”(空格)和完美。