2011-08-17 3 views
0

Ceci est mon style pour le contrôle Silverlight NumericUpDown. Je veux définir TabIndex de Style de contrôle.Définir la propriété du contrôle enfant dans le contrôle de modèle du contrôle NumericUpDown silverlight

<Style x:Key="NumericUpdownStyle_Strength" TargetType="inputToolkit:NumericUpDown"> 
     <Setter Property="Width" Value="Auto"></Setter> 
     <Setter Property="MinWidth" Value="50"></Setter> 
     <Setter Property="Height" Value="20"></Setter> 
     <Setter Property="Minimum" Value="-28"></Setter> 
     <Setter Property="Maximum" Value="28"></Setter>    
     <Setter Property="BorderThickness" Value="0"></Setter> 
     <Setter Property="BorderBrush" Value="White"></Setter> 
     <Setter Property="DecimalPlaces" Value="2"></Setter> 
     <Setter Property="Increment" Value="0.25"></Setter> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="inputToolkit:NumericUpDown"> 
        <Grid> 
         <VisualStateManager.VisualStateGroups> 


          <VisualStateGroup x:Name="CommonStates"> 
           <VisualStateGroup.Transitions> 
            <VisualTransition GeneratedDuration="0"/> 
           </VisualStateGroup.Transitions> 
           <VisualState x:Name="Normal"/> 
           <VisualState x:Name="Disabled"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="(UIElement.Opacity)" To="1"/> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
          <VisualStateGroup x:Name="FocusStates"> 
           <VisualState x:Name="Focused"> 
            <Storyboard> 
             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="Opacity"> 
              <SplineDoubleKeyFrame KeyTime="0" Value="1"/> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Unfocused"/> 
          </VisualStateGroup> 

          <VisualStateGroup x:Name="ValidationStates"> 
           <VisualState x:Name="Valid"/> 
           <VisualState x:Name="InvalidUnfocused"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ValidationErrorElement" Storyboard.TargetProperty="Visibility"> 
              <DiscreteObjectKeyFrame KeyTime="0"> 
               <DiscreteObjectKeyFrame.Value> 
                <Visibility>Visible</Visibility> 
               </DiscreteObjectKeyFrame.Value> 
              </DiscreteObjectKeyFrame> 
             </ObjectAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="InvalidFocused"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ValidationErrorElement" Storyboard.TargetProperty="Visibility"> 
              <DiscreteObjectKeyFrame KeyTime="0"> 
               <DiscreteObjectKeyFrame.Value> 
                <Visibility>Visible</Visibility> 
               </DiscreteObjectKeyFrame.Value> 
              </DiscreteObjectKeyFrame> 
             </ObjectAnimationUsingKeyFrames> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetName="validationTooltip" Storyboard.TargetProperty="IsOpen"> 
              <DiscreteObjectKeyFrame KeyTime="0"> 
               <DiscreteObjectKeyFrame.Value> 
                <sys:Boolean>True</sys:Boolean> 
               </DiscreteObjectKeyFrame.Value> 
              </DiscreteObjectKeyFrame> 
             </ObjectAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 

         </VisualStateManager.VisualStateGroups> 
         <inputToolkit:ButtonSpinner x:Name="Spinner" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" MinWidth="35"> 
          <StackPanel Background="White" Orientation="Horizontal" HorizontalAlignment="Right" Width="Auto">         
           <TextBox x:Name="Text" Style="{StaticResource TextBoxStyle}" TabIndex="0" 
            BorderThickness="0" FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}" FontStretch="{TemplateBinding FontStretch}" FontStyle="{TemplateBinding FontStyle}" FontWeight="{TemplateBinding FontWeight}" Foreground="{TemplateBinding Foreground}" MinWidth="50" Width="Auto" AcceptsReturn="False" Text="{TemplateBinding Value}" TextAlignment="Left" TextWrapping="NoWrap"/> 
          </StackPanel> 
         </inputToolkit:ButtonSpinner> 
         <Border x:Name="DisabledVisualElement" IsHitTestVisible="false" Opacity="0" Background="#A5FFFFFF" CornerRadius="2.5,2.5,2.5,2.5"/> 
         <Border x:Name="FocusVisualElement" IsHitTestVisible="False" Opacity="0" BorderBrush="#FF45D6FA" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="1,1,1,1"/> 
         <Border x:Name="ValidationErrorElement" Visibility="Collapsed" BorderBrush="#FFDB000C" BorderThickness="1" CornerRadius="1"> 
          <ToolTipService.ToolTip> 
           <ToolTip x:Name="validationTooltip" Height="Auto" Width="Auto" Template="{StaticResource ValidationToolTipTemplate}" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"> 
            <ToolTip.Triggers> 
             <EventTrigger RoutedEvent="Canvas.Loaded"> 
              <BeginStoryboard> 
               <Storyboard> 
                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="validationTooltip" Storyboard.TargetProperty="IsHitTestVisible"> 
                 <DiscreteObjectKeyFrame KeyTime="0"> 
                  <DiscreteObjectKeyFrame.Value> 
                   <sys:Boolean>true</sys:Boolean> 
                  </DiscreteObjectKeyFrame.Value> 
                 </DiscreteObjectKeyFrame> 
                </ObjectAnimationUsingKeyFrames> 
               </Storyboard> 
              </BeginStoryboard> 
             </EventTrigger> 
            </ToolTip.Triggers> 
           </ToolTip> 
          </ToolTipService.ToolTip> 
          <Grid Height="12" HorizontalAlignment="Right" Margin="1,-4,-4,0" VerticalAlignment="Top" Width="12" Background="Transparent"> 
           <Path Fill="#FFDC000C" Margin="1,3,0,0" Data="M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z"/> 
           <Path Fill="#ffffff" Margin="1,3,0,0" Data="M 0,0 L2,0 L 8,6 L8,8"/> 
          </Grid> 
         </Border> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Ceci est ma mise en œuvre XAML de NumericUpDownControl

<StackPanel Style="{StaticResource StackPanelStyle_LableValue}"> 
          <TextBlock Text="{Binding Path=ViewItem.Strength, Source={StaticResource LocalizedStrings }}" Style="{StaticResource TextBlockStyle}" /> 
          <inputToolkit:NumericUpDown Style="{StaticResource NumericUpdownStyle_Strength}" 
                 Value="{Binding RightSpecGlassStrength, Mode=TwoWay, ValidatesOnNotifyDataErrors=True, NotifyOnValidationError=True}" 
                 TabIndex="5" /> 
         </StackPanel> 

Je veux bien TabIndex défini dans la mise en œuvre XAML de NumericUpDown doit être héritée dans la "zone de texte" defind dans le style de NumericUpDown contrôle.

Ou

est-il une autre façon d'attribuer la propriété des parents à son enfant tel que défini dans le modèle de contrôle. dire TabIndex de NumericUpDown zone de texte qui est défini dans le style si NumericUpDown

Comment puis-je régler. ??

+0

TabIndex = « {TemplateBidning TabIndex} » dans le modèle de contrôle a fonctionné pour moi .... – PramodChoudhari

Répondre

1

Vous pouvez utiliser TemplateBinding pour lier le TabIndex du TextBox au TabIndex du contrôle NumericUpDown qui le contient. Au sein de votre modèle simple ajouter ...

<TextBox x:Name="Text" TabIndex="{TemplateBidning TabIndex}" ... /> 
+0

Merci pour la réponse ... Oui, je l'ai je mis TabIndex = "{ TemplateBinding TabIndex} " – PramodChoudhari

Questions connexes