如何在文本框中完整文件掩码

时间:2014-09-08 07:36:34

标签: c# wpf

我正在使用infragistics控件进行屏蔽输入。我为XamMaskedInput创建了自己的IP地址和固有类的掩码输入。

继承的类看起来像:

   public class IpMaskedTextBox : XamMaskedInput
    {
        BrushConverter bc = new BrushConverter();
        public IpMaskedTextBox() : base()
        {
            Background = (Brush) bc.ConvertFrom("#F0FAFF");
            BorderThickness = new Thickness(0);
            BorderBrush = null;
            Padding = new Thickness(5,0,5,0);
            FontWeight = FontWeights.Bold;
            VerticalContentAlignment = VerticalAlignment.Center;
            HorizontalContentAlignment = HorizontalAlignment.Center;
        }

        // Prevent space character
        protected override void OnPreviewKeyDown(System.Windows.Input.KeyEventArgs e)
        {
            base.OnPreviewKeyDown(e);

            switch (e.Key)
            {
                case Key.Right:
                    e.Handled = true;
                    break;
                case Key.Left:
                    e.Handled = true;
                    break;
            }
        }
    }

和xaml上的外观:

Masked input

我的问题是,如何从文本框中完整填充整个范围的提示字符,左边和右边没有空格。

此处指向infragistics xamMaskedInput API

的链接

更新

结果应该是这样的:
Final appearence

更新2:

最后我找到了风格:

   <Style x:Key="MaskedInputStyle" TargetType="igEditors:XamMaskedInput">
        <Setter Property="Background" Value="White" />
        <Setter Property="Foreground" Value="Black" />
        <Setter Property="igPrim:XamlHelper.SnapsToDevicePixels" Value="True" />
        <Setter Property="SpinButtonStyle" Value="{StaticResource spinButtonStyle}" />
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="Padding" Value="2"></Setter>
        <Setter Property="BorderBrush" Value="{StaticResource SilverlightDarkBrush}"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="igEditors:XamMaskedInput">
                    <igPrim:ValidationDecorator x:Name="MainBorder">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="MouseOver">
                                    <Storyboard>
                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="OverBorder">
                                            <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
                                        </DoubleAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Disabled">
                                    <Storyboard>
                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="PART_InputTextBox">
                                            <EasingDoubleKeyFrame KeyTime="0" Value="0.25"/>
                                        </DoubleAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="ReadOnly"/>
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="FocusStates">
                                <VisualState x:Name="Unfocused"/>
                                <VisualState x:Name="Focused">
                                    <Storyboard>
                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="OverBorder">
                                            <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
                                        </DoubleAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition />
                            </Grid.ColumnDefinitions>
                            <!-- SSP 10/11/11 TFS91203 - Moved this border to surround the text box below. This is
                            to fix an issue where if the border thickness is set to a large value, the borders cover the contents. -->
                            <!--<Border x:Name="BgBorder" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Grid.ColumnSpan="1" Visibility="Visible" CornerRadius="2" Margin="0"/>
                            <Border x:Name="OverBorder" BorderThickness="1" CornerRadius="1" Opacity="0" Margin="1" BorderBrush="{StaticResource FocusBorderFillKey}" Grid.ColumnSpan="2"/>-->
                            <!-- SSP 10/11/11 TFS91203 - Moved this here from above. See comments above. -->
                            <Border x:Name="BgBorder" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Grid.ColumnSpan="1" Visibility="Visible" CornerRadius="2" Margin="0">
                                <!-- SSP 10/11/11 TFS91426 - Changed the VerticalAlignment from Center to Stretch so the 
                                     VerticalContentAlignment takes effect. 
                                -->
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition/>
                                        <ColumnDefinition Width="Auto"/>
                                    </Grid.ColumnDefinitions>
                                    <!-- SSP 10/11/11 TFS91426 - Changed the VerticalAlignment from Center to Stretch so the 
                                     VerticalContentAlignment takes effect. 
                                -->
                                    <!-- SSP 7/11/13 TFS128674 - Added IsInputMethodEnabled binding -->
                                    <Grid>
                                        <igEditorsPrim:MaskedInputTextBox
                                            x:Name="PART_InputTextBox"
                                            Style="{StaticResource maskedInputTextBoxStyle}"
                                            HorizontalAlignment="Stretch"
                                            HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                            VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                            TextAlignment="{Binding HorizontalContentAlignment, Converter={StaticResource horizToTextAlignmentConverter}, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
                                            Foreground="{TemplateBinding Foreground}"
                                            InputMethod.IsInputMethodEnabled="{TemplateBinding InputMethod.IsInputMethodEnabled}" 
                                            InputMethod.PreferredImeState="{TemplateBinding InputMethod.PreferredImeState}" 
                                            Margin="{TemplateBinding Padding}"
                                            VerticalAlignment="Stretch"
                                    igPrim:XamlHelper.Focusable="{TemplateBinding igPrim:XamlHelper.Focusable}"
                                    IsTabStop="{TemplateBinding IsTabStop}"
                                 />
                                        <Border x:Name="OverBorder" BorderThickness="1" CornerRadius="1" Opacity="0" BorderBrush="{StaticResource FocusBorderFillKey}" Grid.ColumnSpan="2"/>
                                    </Grid>
                                    <Grid x:Name="PART_SpinButtons" Grid.Column="1" Visibility="{TemplateBinding SpinButtonVisibilityResolved}" Margin="1">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="*"/>
                                            <RowDefinition Height="1"/>
                                            <RowDefinition Height="*"/>
                                        </Grid.RowDefinitions>
                                        <RepeatButton x:Name="spinUp" Style="{TemplateBinding SpinButtonStyle}" ContentTemplate="{StaticResource IncreaseGlyphKey}" >
                                            <ig:Commanding.Command>
                                                <igEditorsPrim:MaskedInputCommandSource EventName="Click" CommandId="SpinUp" />
                                            </ig:Commanding.Command>
                                        </RepeatButton>
                                        <RepeatButton x:Name="spinDown" Style="{TemplateBinding SpinButtonStyle}" Grid.Row="2" ContentTemplate="{StaticResource DecreaseGlyphKey}">
                                            <ig:Commanding.Command>
                                                <igEditorsPrim:MaskedInputCommandSource EventName="Click" CommandId="SpinDown" />
                                            </ig:Commanding.Command>
                                        </RepeatButton>
                                    </Grid>
                                </Grid>
                            </Border>
                        </Grid>
                    </igPrim:ValidationDecorator>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

0 个答案:

没有答案