以编程方式选择列表框项目

时间:2017-02-14 04:57:17

标签: xaml listbox uwp

我有一个带有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;
            }
        }
    }
}

我通过从不同的xaml页面(订单页面)设置App.SelectedPage来调用上面的方法我在这里有一个链接仪表板导航回仪表板页面,当我点击列表框中的特定仪表板项目时(侧栏)应突出显示

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

但是当我调试它时,它没有被选中,在selecteditem

中显示为null

3 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分:0)

我认为您可以覆盖onNavigatedTo()方法并将项目的颜色更改为默认值。在(Frame).Navigate()传递为另一帧的参数中,列表的.SelectedItem进行比较。 抱歉我的英文。

答案 2 :(得分:0)

如果我们将集合设置为ItemSource的{​​{1}},我们应该可以使用设置为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> 来设置所选项目。

当我们设置要突出显示SelectedItem时,如果要更改其他颜色,我们应该能够使用ListBox.ContainerFromItem获取ListBox.SelectedIndex。然后我们可以设置ListBoxItemBackground