123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- <UserControl x:Class="WpfControlLibrary.IpAddress.IpAddressControl"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:local="clr-namespace:WpfControlLibrary.IpAddress"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- Margin="10,0"
- d:DesignHeight="50"
- d:DesignWidth="800"
- mc:Ignorable="d"
- Background="White">
- <UserControl.Resources>
- <ControlTemplate x:Key="validationTemplate">
- <DockPanel>
- <TextBlock Margin="1,2"
- DockPanel.Dock="Right"
- FontSize="{DynamicResource ResourceKey=Heading4}"
- FontWeight="Bold"
- Foreground="Red"
- Text="" />
- <AdornedElementPlaceholder />
- </DockPanel>
- </ControlTemplate>
- <Style x:Key="CustomTextBoxTextStyle"
- TargetType="TextBox">
- <Setter Property="MaxLength"
- Value="3" />
- <Setter Property="HorizontalAlignment"
- Value="Stretch" />
- <Setter Property="VerticalAlignment"
- Value="Center" />
- <Style.Triggers>
- <Trigger Property="Validation.HasError"
- Value="True">
- <Trigger.Setters>
- <Setter Property="ToolTip"
- Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}" />
- <Setter Property="BorderBrush"
- Value="Red" />
- <Setter Property="Background"
- Value="Red" />
- </Trigger.Setters>
- </Trigger>
- </Style.Triggers>
- </Style>
- </UserControl.Resources>
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition MinWidth="30" />
- <ColumnDefinition Width="10" />
- <ColumnDefinition MinWidth="30" />
- <ColumnDefinition Width="10" />
- <ColumnDefinition MinWidth="30" />
- <ColumnDefinition Width="10" />
- <ColumnDefinition MinWidth="30" />
- </Grid.ColumnDefinitions>
-
- <TextBox Grid.Column="0"
- BorderThickness="0"
- HorizontalAlignment="Stretch"
- VerticalAlignment="Stretch"
- VerticalContentAlignment="Center"
- HorizontalContentAlignment="Center"
- x:Name="part1"
- PreviewKeyDown="Part1_PreviewKeyDown"
- local:FocusChangeExtension.IsFocused="{Binding IsPart1Focused, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}"
- Style="{StaticResource CustomTextBoxTextStyle}"
- Validation.ErrorTemplate="{StaticResource validationTemplate}">
- <TextBox.Text>
- <Binding Path="Part1"
- UpdateSourceTrigger="PropertyChanged">
- <Binding.ValidationRules>
- <local:IPRangeValidationRule Max="255"
- Min="0" />
- </Binding.ValidationRules>
- </Binding>
- </TextBox.Text>
- </TextBox>
- <TextBlock Grid.Column="1"
- HorizontalAlignment="Center"
- FontSize="15"
- Text="."
- VerticalAlignment="Center" />
-
- <TextBox Grid.Column="2"
- x:Name="part2"
- BorderThickness="0"
- VerticalAlignment="Stretch"
- VerticalContentAlignment="Center"
- HorizontalContentAlignment="Center"
- PreviewKeyDown="Part2_KeyDown"
- local:FocusChangeExtension.IsFocused="{Binding IsPart2Focused}"
- Style="{StaticResource CustomTextBoxTextStyle}"
- Validation.ErrorTemplate="{StaticResource validationTemplate}">
- <TextBox.Text>
- <Binding Path="Part2"
- UpdateSourceTrigger="PropertyChanged">
- <Binding.ValidationRules>
- <local:IPRangeValidationRule Max="255"
- Min="0" />
- </Binding.ValidationRules>
- </Binding>
- </TextBox.Text>
- </TextBox>
- <TextBlock Grid.Column="3"
- HorizontalAlignment="Center"
- FontSize="15"
- Text="."
- VerticalAlignment="Center" />
-
- <TextBox Grid.Column="4"
- x:Name="part3"
- BorderThickness="0"
- VerticalAlignment="Stretch"
- VerticalContentAlignment="Center"
- HorizontalContentAlignment="Center"
- PreviewKeyDown="Part3_KeyDown"
- local:FocusChangeExtension.IsFocused="{Binding IsPart3Focused}"
- Style="{StaticResource CustomTextBoxTextStyle}"
- Validation.ErrorTemplate="{StaticResource validationTemplate}">
- <TextBox.Text>
- <Binding Path="Part3"
- UpdateSourceTrigger="PropertyChanged">
- <Binding.ValidationRules>
- <local:IPRangeValidationRule Max="255"
- Min="0" />
- </Binding.ValidationRules>
- </Binding>
- </TextBox.Text>
- </TextBox>
- <TextBlock Grid.Column="5"
- HorizontalAlignment="Center"
- FontSize="15"
- Text="."
- VerticalAlignment="Center" />
-
- <TextBox Grid.Column="6"
- x:Name="part4"
- BorderThickness="0"
- VerticalAlignment="Stretch"
- VerticalContentAlignment="Center"
- HorizontalContentAlignment="Center"
- PreviewKeyDown="Part4_KeyDown"
- local:FocusChangeExtension.IsFocused="{Binding IsPart4Focused}"
- Style="{StaticResource CustomTextBoxTextStyle}"
- Validation.ErrorTemplate="{StaticResource validationTemplate}">
- <TextBox.Text>
- <Binding Path="Part4"
- UpdateSourceTrigger="PropertyChanged">
- <Binding.ValidationRules>
- <local:IPRangeValidationRule Max="255"
- Min="0" />
- </Binding.ValidationRules>
- </Binding>
- </TextBox.Text>
- </TextBox>
- </Grid>
- </UserControl>
|