2017-02-14 2 views
0

У меня есть меню гамбургера с ListBox. Когда я нажимаю на элементы, которые он выделяет и перемещается на связанную страницу, но когда я нажимаю на любую ссылку внутри страницы xaml, элемент гамбургера не меняется, даже страница навигация. Как установить элемент списка, выделенный и выделенный из кода позади. Заранее спасибоВыбор пункта списка программно

Я зову следующую функцию из любого места мне нужно изменить пункт Listbox к моему требуется один

public async static void ChangeSideBarItem() 
    { 
     ADHome objADHome = new ADHome(); 
     string selected = App.SelectedPage; 

     int x = objADHome.SideBarListBox.Items.IndexOf(selected); 
     if (!String.IsNullOrEmpty(selected)) 
     { 
      for (int index = 0; index < objADHome.SideBarListBox.Items.Count; index++) 
      { 
       HamburgerItemClass item = (HamburgerItemClass)objADHome.SideBarListBox.Items[index]; 

       string item1 = item.Title; 
       if (selected == item1) 
       { 
        objADHome.SideBarListBox.SelectedItem = index; 
        break; 
       } 
      } 
     } 
    } 

Я звоню выше метод, установив App.SelectedPage с другой страницы XAML (заказы Page) здесь у меня есть ссылка Приборная панель для навигации обратно приборной панели страницы, когда я нажимаю на том, что конкретный элемент приборной панели в ListBox (Sidebar) должны быть выделены

private void DashboardLink_Click(object sender, RoutedEventArgs e) 
    { 
     App.SelectedPage = "Dashboard"; 
     ADHome.ChangeSideBarItem(); 
     this.Frame.Navigate(typeof(DashBoard)); 
    } 

Но его не выбран, когда я его отладки, показывает null в selecteditem

ответ

0

Как правило, вы можете просто добавить свои элементы в ListBox.SelectedItems коллекции:

private void SelectButton_Click(object sender, RoutedEventArgs e) 
{ 
    // either by adding item from collection: 
    myListBox.SelectedItems.Add(CollectionOfItems[1]); 

    // or add from list itself: 
    myListBox.SelectedItems.Add(myListBox.Items.Last()); 
} 
+0

Извините, я не понял ур ответа – Murali

+0

@Murali Вы спросили: «Как установить элемент списка, выделенный и выделенный из кода позади» - это ответ на этот вопрос, у вас есть * ListBox *, определенный в xaml как ' myListBox' с * ItemsSource * установлен как 'CollectionOfItems'. Я только что представил это как событие манекена нажатием кнопки. – Romasz

+0

my collectionOfItems привязываются к listbox и работают, но я хочу изменить выбранный элемент, не щелкая элемент в пункте меню гамбургера (например, элементы списка). Пример: у меня есть элемент Dashboard and Orders в меню, когда я нажал на Dashboard, Dashboard.xaml перемещается к фрейму, и элемент выделяется (по умолчанию стиль Listbox) в меню гамбургера, но когда у меня есть ссылка в Страница Dashboard.xaml, подобная Goto OrdersPage, когда я нажимаю на нее, OrdersPage.xaml перемещается к кадру, но меню Hamburger все еще выделяет элемент панели инструментов. – Murali

0

Я думаю, что вы можете переопределить метод onNavigatedTo() и изменить цвет элемента по умолчанию. В (Frame).Navigate() передайте в качестве аргумента другому кадру .SelectedItem списка для сравнения. Извините за мой английский.

0

Если мы установим коллекцию в ItemSource из ListBox, мы сможем использовать ее для установки на ListBox.SelectedItem. Когда моя коллекция ObservableCollection<Menu> Menus, мы должны быть в состоянии использовать объект Menu, установленный на ListBox.SelectedItem.

Например:

SideBarListBox.SelectedItem = Menus[1]; 

Если мы устанавливаем ListBoxItem следующим кодом, мы должны быть в состоянии использовать ListBoxItem набор для ListBox.SelectedItem.

<ListBox Name="MyListBox"> 
    <ListBox.Items> 
     <ListBoxItem Name="FristItem"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock FontFamily="Segoe MDL2 Assets" FontSize="36" Text="&#xE170;"></TextBlock> 
      </StackPanel> 
     </ListBoxItem> 
     <ListBoxItem Name="SecondItem"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock FontFamily="Segoe MDL2 Assets" FontSize="36" Text="&#xE171;"></TextBlock> 
      </StackPanel> 
     </ListBoxItem> 
    </ListBox.Items> 
</ListBox> 

Кстати, мы должны быть в состоянии использовать ListBox.SelectedIndex для установки выбранного пункта.

Когда мы установим, что SelectedItem будет выделен, если вы хотите изменить другой цвет на него, мы сможем использовать ListBox.ContainerFromItem для получения ListBoxItem. Затем мы можем установить Background и Foreground.

Смежные вопросы