0

MVVMパターンを使用してWPFアプリケーションのコントロールをタブで移動する際に問題が発生します。ツリー構造を定義する次のXAMLがあります

<Grid Background="Transparent" Margin="10">
    <TreeView ItemsSource="{Binding FirstLevelNavigableViewModels}" Background="Transparent" 
              HorizontalContentAlignment="Stretch"
              HorizontalAlignment="Stretch"
              BorderThickness="0"
              ItemContainerStyle="{StaticResource TreeViewItemStyle1}">
        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="{x:Type ViewModel:VendorViewModel}" ItemsSource="{Binding Children}">
                <View:VendorView HorizontalContentAlignment="Stretch" />
            </HierarchicalDataTemplate>

            <DataTemplate DataType="{x:Type ViewModel:ProductViewModel}">
                <View:ProductView HorizontalContentAlignment="Stretch" />
            </DataTemplate>
        </TreeView.Resources>
    </TreeView>
</Grid>

ツリービューが読み込まれると、「ProductView」のXAMLは次のようになります。

<Border Margin="0,2,2,2" CornerRadius="3" Background="#3FC7B299" DockPanel.Dock="Right" HorizontalAlignment="Right" Width="109">
    <StackPanel Orientation="Vertical" Margin="6,4">
        <DockPanel>
            <TextBlock  DockPanel.Dock="Left" FontFamily="Segoe" FontSize="10" FontWeight="Medium"
                        Foreground="Black" Opacity="0.75" 
                        Text="CALC. REG. PRICE"></TextBlock>
            <Button Width="10" Height="10" Background="Transparent" BorderBrush="Transparent" BorderThickness="0" Padding="-4" Margin="0" Command="{Binding UserDefinedRetailPriceCommand}" Visibility="{Binding UserDefinedRetailPriceButtonView}">
                <Image Width="10" Height="10" Source="/Arhaus.Pricing.Client;component/Styles/Images/error.png"></Image>
            </Button>
        </DockPanel>
        <TextBox    FontFamily="Segoe" FontSize="16" FontWeight="Medium" KeyboardNavigation.IsTabStop="True" KeyboardNavigation.TabIndex="{Binding RegularPriceTabIndex}"
                    Foreground="Black" Opacity="0.9" KeyboardNavigation.TabNavigation="Continue"
                    ebf:LostFocusBehaviour.LostFocusCommand = "{Binding LostFocusSugg}"
                    Text="{Binding NewSuggestedRetailPrice,Converter={StaticResource FormattingConverter}, ConverterParameter=' \{0:C\}', Mode=TwoWay, UpdateSourceTrigger=LostFocus}" Background="#FFE6DED3" BorderBrush="#FFE6DED3" DataContext="{Binding StringFormat=\{0:c\}, NotifyOnValidationError=True}" Padding="0" TabIndex="1"></TextBox>
    </StackPanel>
</Border>

タブインデックスは、ツリービューがロードされるときに増加し、バインドされる整数にバインドされます(つまり、連続する各モデルがロードされるときに、タブインデックス1、2、3などとして設定されます)。

Tabキーを押して、ツリービューの次のテキストボックスにジャンプできるようにしたいのですが、Tabキーをクリックしても何も起こりません。タブが正しく設定されているかどうかはわかりませんが、WPFは非常に初めてであり、タブを機能させるためにどこでどのように設定するかについて迷っています。私は、タブインデックスを設定してそこから移動するWinFormsに慣れています。

ご協力いただきありがとうございます。大きなコードブロックをお詫び申し上げます。

4

1 に答える 1

0

私は解決策を用意していませんが、おそらく役立つかもしれないいくつかの考え:

RegularPriceTabIndexが何を返すかはわかりませんが、同じインデックスの新しいTreeViewItemごとに開始される可能性がありますか?ProductViewを繰り返し使用するため、同じタブインデックスが複数回指定されます。おそらくこれは問題につながります。ProductViewにFocusManager.IsFocusScope="true"を設定してみてください。多分これは役に立ちます。

また、TextBoxでControl.IsTabStop="true"を設定してみてください。

于 2010-09-07T19:10:54.703 に答える