首页 新闻 会员 周边

wpf中ListView使用问题

0
悬赏园豆:15 [已解决问题] 解决于 2014-07-02 10:10

最近在做一个小练习,就是出口算题,然后显示在界面上如下图

我把一系列的口算题通过绑定的方式显示在ListView中,这时候问题来了:

我想达到用户按Tab键就可以将焦点移动到下一个文本框的效果,但是目前的做法没办法移动焦点,有没解决办法呢?最好是用MVVM绑定解决,那样判分什么的功能就好做了。我的Xaml代码是这样的

 <ListView HorizontalAlignment="Stretch"
                  Name="listView1"
                  VerticalAlignment="Stretch"
                  ItemsSource="{Binding Path=Expressions}"
                  Grid.Row="1"
                  Padding="15 0">
            <ListView.Background>
                <LinearGradientBrush EndPoint="0.5,1"
                                     StartPoint="0.5,0">
                    <GradientStop Color="AliceBlue"
                                  Offset="0" />
                    <GradientStop Color="#FF0DF5F5"
                                  Offset="1" />
                </LinearGradientBrush>
            </ListView.Background>

            <ListView.ItemContainerStyle>
                <Style>
                    <Setter Property="KeyboardNavigation.IsTabStop"
                            Value="False" />
                </Style>
            </ListView.ItemContainerStyle>

            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel ItemWidth="240"
                               ItemHeight="50"
                               IsItemsHost="True"
                               KeyboardNavigation.IsTabStop="False"
                               Width="{Binding ActualWidth,RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}" />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>

            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Path=Expression}"
                                   FontSize="20"
                                   FontWeight="Bold"
                                   Style="{StaticResource ResourceKey=TextBlockMargin}"></TextBlock>
                        <TextBlock FontSize="20"
                                   FontWeight="Bold"
                                   Style="{StaticResource ResourceKey=TextBlockMargin}">=</TextBlock>
                        <TextBox Text="{Binding Path=UserAnswer,Mode=TwoWay}"
                                 FontSize="20"
                                 FontWeight="Bold"
                                 Width="60"
                                 Style="{StaticResource ResourceKey=TextBoxExam}"></TextBox>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

各位达人给个建议吧。

于为源的主页 于为源 | 小虾三级 | 园豆:956
提问于:2014-06-17 09:56
< >
分享
最佳答案
0

先写个FocusHelper类,里面写个IsFocused附加属性,通过这个属性来控制获取焦点。

再在ViewModel里写个IsFoucsed属性,在 TextBox绑定FocusHelper.IsFoucsed="{Binding IsFocused}" ,就可以通过MVVM来控制焦点了。

收获园豆:15
德年 | 小虾三级 |园豆:810 | 2014-06-17 13:39

谢谢您的回复,试来试去还是没有实现您说的这种方式……

于为源 | 园豆:956 (小虾三级) | 2014-06-19 16:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册