2017-02-14 6 views
0

Ich habe ein Hamburger-Menü mit ListBox, wenn ich auf Elemente klicken, ist es markiert und navigierte zu verwandten Seite, aber wenn ich auf Any Link innerhalb der Xaml-Seite der Hamburger Element nicht ändert, ist die Seite ist navigiert. So legen Sie Listbox-Elemente fest, die im Code ausgewählt und hervorgehoben sind Vielen Dank im VorausListbox Element Auswahl programmatisch

Ich rufe die folgende Funktion aus, wo immer ich brauche das Listbox Element in mein ein

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; 
       } 
      } 
     } 
    } 

ich das obige Verfahren nenne durch die App.SelectedPage verschiedene XAML Seite erforderlich Einstellungen ändern (hier Aufträge Seite) habe ich einen Link Dashboard Dashboard-Seite zurück zu navigieren, wenn ich auf klicken, dass das bestimmte Dashboard-Element in listbox (Sidebar) sollte

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

Aber nicht ausgewählt hervorgehoben werden, wenn ich es zu debuggen, zeigt null in ausgewählt an Artikel

Antwort

0

Im Allgemeinen können Sie einfach Ihre Artikel ListBox.SelectedItems Sammlung:

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

Sorry, ich habe Ihre Antwort nicht verstanden – Murali

+0

@Murali Sie fragte 'Wie Listbox Element ausgewählt und markiert aus dem Code hinter' - das ist die Antwort auf diese Frage, haben Sie Ihre * ListBox * in Xaml definiert als ' myListBox' mit * ItemsSource * als 'CollectionOfItems' gesetzt. Ich habe dies nur als ein Ereignis von Dummy-Button-Klick dargestellt. – Romasz

+0

Meine collectionOfItems sind an die Listbox gebunden und funktionieren, aber ich möchte das ausgewählte Element ändern, ohne auf das Element im Hamburger-Menüelement (d. H. Listbox-Elemente) zu klicken. Bsp: Ich habe ein Dashboard und einen Befehl im Menü, wenn ich auf Dashboard geklickt habe, Dashboard.xaml wird zum Frame navigiert, und das Element wird im Hamburger-Menü hervorgehoben (im Standardstil von Listbox), aber wenn ich einen Link in habe Dashboard.xaml-Seite wie Goto OrdersPage, wenn ich darauf klicke, wird die OrdersPage.xaml zum Frame navigiert, aber das Hamburger-Menü markiert immer noch das Dashboard Item. – Murali

0

Ich denke, dass Sie die onNavigatedTo() Methode außer Kraft setzen kann und die Farbe des Elements auf die Standardeinstellung ändern. In der (Frame).Navigate() übergeben als Argument an den anderen Rahmen der .SelectedItem der Liste, um den Vergleich zu machen. Entschuldigung für mein Englisch.

0

Wenn wir die Sammlung auf die ItemSource der ListBox setzen, sollten wir in der Lage sein, die ListBox.SelectedItem zu verwenden. Wenn meine Sammlung ObservableCollection<Menu> Menus ist, sollten wir in der Lage sein, das Menu Objekt zu verwenden, das auf dem ListBox.SelectedItem festgelegt wird.

Zum Beispiel:

SideBarListBox.SelectedItem = Menus[1]; 

Wenn wir die ListBoxItem durch den folgenden Code setzen, sollten wir in der Lage sein, den ListBoxItem Satz zum ListBox.SelectedItem zu verwenden.

<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> 

By the way, sollten wir in der Lage sein, die ListBox.SelectedIndex zu verwenden, um das ausgewählte Element zu setzen.

Wenn wir festlegen, dass das SelectedItem markiert wird, wenn Sie die andere Farbe ändern möchten, sollten wir ListBox.ContainerFromItem verwenden können, um die ListBoxItem zu erhalten. Dann können wir die Background und die Foreground einstellen.

Verwandte Themen