0

Silverlight アプリケーションで NumericUpDown コントロールを使用しています。タブを使用して Silverlight ページのコントロール間を移動するときに問題が発生します。

ケース 1:コントロール フォーカスが NumericUpDown にあり、上下キーを使用すると、NumericUpDown コントロールで値が増減します。タブを押してフォーカスが次のコントロールに移動すると、誰のタブインデックスが +1 になりますか

ケース 2: NumericUpDown コントロールをクリックすると、クリックした後に NumericUpDownControl がフォーカスされ、キーボードから値を入力してタブ ID を押すと、次のコントロールに移動しません。(1stケースで動くので)

ケース 2 で NumericUpDown コントロールをクリックしてからタブを押すと、コントロールのキーダウン イベントで、元のソースが TextBox として取得されることがわかりました。

**   private void Control_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.OriginalSource as Control != null
            && e.Key == Key.Tab)
        {
            Int32 index = (e.OriginalSource as Control).TabIndex;
            if (index == Int32.MaxValue) index = index1; //??//
            if (Keyboard.Modifiers == ModifierKeys.None)
            {

            }
            else if (Keyboard.Modifiers == ModifierKeys.Shift)
            {

            }
        }
    }

**

ケース 1 : NumericUpDown コントロールをオリジナル ソースとして 取得ケース 2 : TextBox コントロールをオリジナル ソースとして取得

NumericUpDown コントロールの TabIndex を設定したところ、TextBox の TabIndex プロパティを取得できなかったため、上記の問題が発生しています。

NumericUpDown コントロールの TextBox に TabIndex を設定するにはどうすればよいですか??

コントロール テンプレート

`

                            <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}"  
                                     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>`

<inputToolkit:ButtonSpinner></inputToolkit:ButtonSpinner>**実行時に Text の TabIndex プロパティから TextBox を設定したい。

これを行うにはどうすればよいですか?**

4

1 に答える 1

0
<TextBox x:Name="Text"  Style="{StaticResource TextBoxStyle}"  
                                 BorderThickness="0" FontFamily="{TemplateBinding FontFamily}" TabIndex="{TemplateBinding TabIndex} 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"/>  

TabIndex="{TemplateBinding TabIndex} の設定がうまくいきました

于 2011-08-17T09:03:17.637 に答える