2011-08-17 4 views
0

이것은 Silverlight NumericUpDown 컨트롤을위한 내 스타일입니다. 나는 TabIndex를 컨트롤 스타일로 설정하려고합니다.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> 

이 내가 NumericUpDown의 XAML 구현에 정의 된 tabIndex 속성이 NumericUpDown 컨트롤의 스타일로 "텍스트 상자"defind에서 상속해야합니다

<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> 

NumericUpDownControl

내 XAML 구현입니다.

또는

컨트롤 템플릿에 정의 된 그 아이에게 부모 속성을 할당하는 다른 방법이 있나요. NumericUpDown의 즉이 tabIndex은 NumericUpDown이

가 어떻게 설정할 경우 스타일 내에서 정의 된 상자를 텍스트합니다. ??

+0

의 tabindex = "{TemplateBidning에 tabIndex} '컨트롤 템플릿에 ... 답장을 .... 나를 위해 – PramodChoudhari

답변

1

당신은 그것을 포함 NumericUpDown 제어의 TabIndexTextBoxTabIndex 바인딩 TemplateBinding를 사용할 수 있습니다. 템플릿 간단한 추가 ...

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

감사했다 예 내가 설정을 가지고이 tabIndex ="{내 TemplateBinding TabIndex} " – PramodChoudhari

관련 문제