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 键时,什么也没有发生。我不确定我是否正确设置了选项卡,但我对 WPF 非常陌生,不知道在哪里以及如何设置选项卡以使其工作。我习惯了 WinForms,您只需设置选项卡索引并从那里开始。

感谢您的帮助,对于大代码块,我深表歉意。

4

1 回答 1

0

我没有准备好解决方案,但一些想法可能会有所帮助:

我不知道RegularPriceTabIndex 返回什么,但它可能从同一索引处的每个新TreeViewItem 开始?由于重复使用 ProductView,因此会多次给出相同的选项卡索引。也许这会导致一个问题。您可以尝试为 ProductView 设置FocusManager.IsFocusScope="true"。也许这有帮助。

还尝试在 TextBox 上设置Control.IsTabStop="true" 。

于 2010-09-07T19:10:54.703 回答