Как установить фокус на 1-й элемент вложенного списка в Silverlight? - PullRequest
1 голос
/ 25 марта 2010

У меня есть список, в котором есть еще один список.

<ListBox x:Name="listBoxParent">
    <ListBox.ItemTemplate>

      <DataTemplate>


        <Image x:Name="thumbNailImagePath" Source="/this.jpg"  Style="{StaticResource ThumbNailPreview}" />                              
           <TextBlock Margin="5" Text="{Binding Smthing}" Style="{StaticResource TitleBlock_Artist}" />
           </StackPanel>
           <StackPanel Style="{StaticResource someStyle}" >
             <ListBox x:Name="listBoxChild" Loaded="listBoxChild_Loaded" BorderThickness="0">
               <ListBox.ItemTemplate>
                 <DataTemplate>
                   <StackPanel>
                     <TextBlock Margin="5" Text="{Binding myText}" Width="300"/>
                   </StackPanel>
                 </DataTemplate>
               </ListBox.ItemTemplate>
             </ListBox>
           </StackPanel>
         </DataTemplate>
        </ListBox.ItemTemplate>

      <ListBox.ItemsPanel>

      </ListBox.ItemsPanel>

</ListBox>

Теперь, когда я пытаюсь сфокусироваться на 1-м элементе дочернего списка, он фокусируется (как это повторяется внутри родительского списка) на 1-й элемент 1-го элемента parentlist, если бы я мог предоставить снимок экрана для лучшего понимания , Но не могу

 public void listBoxChild_Loaded(object sender, RoutedEventArgs e)
        {
           var myListBox = (ListBox)sender;

           myListBox .ItemsSource = PageVariables.eOUTData;//listboxSongsData;
           myListBox .SelectedIndex = 0;
           myListBox .Focus();
        }

Спасибо, Subhen

1 Ответ

0 голосов
/ 29 марта 2010

Трудно определить, чего вы пытаетесь достичь в своем коде.

Одна идея: Рассматривали ли вы изменение внутреннего ListBox на ItemsControl ? Если вам нужно было также прокрутить его, вы можете наложить его на ScrollViewer .

Вторая идея (возможно, дополнительная идея): Каждый элемент, созданный в шаблоне элемента, вызывает событие Loaded. Разве вы не хотите, чтобы это произошло только один раз? Удалите событие из внутреннего ListBox и установите фокус после загрузки внешнего списка.

...