我正在使用WPF扩展工具包,我想知道是否可以隐藏掩码,然后在用户输入时,MaskedTextBox开始掩盖文本。
默认设置是将蒙版显示为文本。例如,掩码是
(99)999-9999
默认文字为:
(__)___-____
我想要一个空白文本,就像一个javascript模板。
修改
我已经尝试将ClipboardMaskFormat更改为“ExcludePromptAndLiterals”和“HidePromptOnLeave”为true,但不起作用。
答案 0 :(得分: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
时才可见。
答案 1 :(得分:0)
我有类似的问题。我需要删除所有&#34; _&#34;因此,当他/她在掩码文本框中输入IP时,客户不会感到困惑。我做的是
<wpx:MaskedTextBox IncludePromptInValue="True" IncludeLiteralsInValue="False" Mask="000,000,000,000" PromptChar=" "/>
我将PromptChat设置为&#34; &#34; (一片空白)并且工作得很好。