访问LongListSelector中的ListBox和其他子项

时间:2014-04-06 15:55:52

标签: c# xaml windows-phone-8

我正在建立一个应用程序,其中有一个任意长的项目列表,您可以点击其中任何一个并进行编辑。当您编辑任何这些项目时,我想以编程方式将焦点更改为列表中的下一个项目。

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <phone:LongListSelector x:Name="MainLongListSelector" Margin="0,0,-12,0" ItemsSource="{Binding Items}" SelectionChanged="MainLongListSelector_SelectionChanged">
        <phone:LongListSelector.ItemTemplate>
            <DataTemplate>
              <StackPanel Margin="0,-10,0,-12">
                  <TextBox  x:Name ="tb" Text="{Binding TheText}" TextWrapping="Wrap" TextChanged="TextBox_TextChanged" />
              </StackPanel>
            </DataTemplate>
        </phone:LongListSelector.ItemTemplate>
    </phone:LongListSelector>
</Grid>

当用户键入第一个TextBox并且他的文本超过某个字符数(例如138)时,我想要将另一个项目添加到列表作为下一个项目并将焦点更改为它,或者,如果有&#39 ; s已经是下一个项目,将焦点改为它。

我无法弄清楚如何访问

1)根列表框 2)给定列表框项目ID

的项目中的TextBox控件

这是我尝试过的。当它运行时,MainLongListSelector.SelectedITem = nextItem会导致选择下一个项目,但它不会得到焦点。

private void TextBox_TextChanged(object sender, TextChangedEventArgs e) {
    var editBox = sender as TextBox;
    var selectedItem = MainLongListSelector.SelectedItem as ItemViewModel;
    if (editBox != null && selectedItem != null && editBox.Text.Length > 138) {
        // Move data at end to next box
        var overflow = editBox.Text.Substring(138, editBox.Text.Length - 138) ;
        selectedItem.Tweet = editBox.Text.Substring(0, 138);
        var nextItem = App.ViewModel.Items[int.Parse(selectedItem.ID) + 1];
        nextItem.Tweet = overflow;
        MainLongListSelector.SelectedItem = nextItem;
    }
}

我希望能够访问nextItem的实际TextBox,这样我就可以明确地将焦点设置为它。

如果我只使用ListBox但问题不同,同样的问题也适用。在ListBox DataTemplate包含TextBox且焦点设置的情况下,我不会收到SelectionChanged个事件......这就是我为什么会这样做的原因。坚持LongListSelector

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望TextBox在选择项目项时获得焦点。

如果这是你需要的,这里有一种方法将LisBoxItem.IsSelected绑定到Element.Focus(): http://social.msdn.microsoft.com/Forums/en-US/adeb3e7f-16df-4c7b-b2d2-d7cdedb32ac0/setting-focus-of-a-textbox-inside-a-listbox?forum=wpf

相关问题