Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF表单中的箭头键导航是奇怪的_Wpf_Arrow Keys - Fatal编程技术网

WPF表单中的箭头键导航是奇怪的

WPF表单中的箭头键导航是奇怪的,wpf,arrow-keys,Wpf,Arrow Keys,我有一个WPF的形式,我想有箭头键导航。当前系统已关闭,即使我已成功指定选项卡导航顺序。我有两排三个单选按钮。当我在中间按钮,最上面一行,我应该能够点击左箭头,并选择第一个按钮的最上面一行;相反,它选择第一个按钮,即底部的一行。我如何纠正这个问题 更新: 对我来说,这也是一种奇怪的行为,玩过之后,我可以告诉你这是由HorizontalAlignment属性引起的,但我无法解释原因。也许其他人可以解释一下 更多信息: 在您的案例中,控件按内容属性的字母顺序集中。您可以通过更改 <Radio

我有一个WPF的形式,我想有箭头键导航。当前系统已关闭,即使我已成功指定选项卡导航顺序。我有两排三个单选按钮。当我在中间按钮,最上面一行,我应该能够点击左箭头,并选择第一个按钮的最上面一行;相反,它选择第一个按钮,即底部的一行。我如何纠正这个问题

更新:
对我来说,这也是一种奇怪的行为,玩过之后,我可以告诉你这是由HorizontalAlignment属性引起的,但我无法解释原因。也许其他人可以解释一下


更多信息:

在您的案例中,控件按内容属性的字母顺序集中。您可以通过更改

<RadioButton Content="All People" Grid.Column="0" HorizontalAlignment="Left"
校外

由于我没有意识到这种行为,我尝试通过使用以下XAML创建一个新项目来复制,但箭头键的行为与预期一样,将重点放在箭头键方向的下一个邻居上:

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>

        <Grid Grid.Row="0">
            <Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <RadioButton Grid.Column="0" Content="All People"></RadioButton>
            <RadioButton Grid.Column="1" Content="Users Only"></RadioButton>
            <RadioButton Grid.Column="2" Content="Admin Only"></RadioButton>
        </Grid>

        <Grid Grid.Row="1">
            <Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <RadioButton Grid.Column="0" Content="Off Campus"></RadioButton>
            <RadioButton Grid.Column="1" Content="Admin"></RadioButton>
            <RadioButton Grid.Column="2" Content="User"></RadioButton>
        </Grid>
</Grid>

所以我删除了xaml单选按钮的属性,直到我最终通过删除HorizontalAlignment达到了目的

XAML现在正在按预期工作,至少对于单选按钮:

<Grid Grid.Column="1" Grid.Row="0">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <RadioButton Content="All People" Grid.Column="0" Margin="0,5,0,0" VerticalAlignment="Top" IsChecked="{Binding Path=IsPersonAll}" TabIndex="3" />
    <RadioButton Content="Users Only" Grid.Column="1" Margin="0,5,0,0" VerticalAlignment="Top" IsChecked="{Binding Path=IsPersonUser}" TabIndex="4" />
    <RadioButton Content="Admin Only" Grid.Column="2" Margin="0,5,0,0" VerticalAlignment="Top" TabIndex="5" />
</Grid>
<Grid Grid.Column="1" Grid.Row="1">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <RadioButton Content="Off Campus" Grid.Column="0" Margin="0,5,0,0" VerticalAlignment="Top" IsChecked="{Binding Path=IsCallerOff}" TabIndex="6" />
    <RadioButton Content="Admin" Grid.Column="1"  Margin="0,5,0,0" VerticalAlignment="Top" IsChecked="{Binding Path=IsCallerOnAd}" TabIndex="7" />
    <RadioButton Content="User" Grid.Column="2" Margin="0,5,0,0" VerticalAlignment="Top" TabIndex="8" />
</Grid>

Tabindex不应影响箭头键导航,而是通过布局容器的子级进行导航。您是否使用单个网格(2行/3列)承载单选按钮?也许可以提供XAML@milter--谢谢,这是密码。
<Grid Grid.Column="1" Grid.Row="0">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <RadioButton Content="All People" Grid.Column="0" Margin="0,5,0,0" VerticalAlignment="Top" IsChecked="{Binding Path=IsPersonAll}" TabIndex="3" />
    <RadioButton Content="Users Only" Grid.Column="1" Margin="0,5,0,0" VerticalAlignment="Top" IsChecked="{Binding Path=IsPersonUser}" TabIndex="4" />
    <RadioButton Content="Admin Only" Grid.Column="2" Margin="0,5,0,0" VerticalAlignment="Top" TabIndex="5" />
</Grid>
<Grid Grid.Column="1" Grid.Row="1">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <RadioButton Content="Off Campus" Grid.Column="0" Margin="0,5,0,0" VerticalAlignment="Top" IsChecked="{Binding Path=IsCallerOff}" TabIndex="6" />
    <RadioButton Content="Admin" Grid.Column="1"  Margin="0,5,0,0" VerticalAlignment="Top" IsChecked="{Binding Path=IsCallerOnAd}" TabIndex="7" />
    <RadioButton Content="User" Grid.Column="2" Margin="0,5,0,0" VerticalAlignment="Top" TabIndex="8" />
</Grid>