首页 文章

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

提问于
浏览
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;
                }
            }
        }
    }

我通过从不同的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

    通常,您只需将项目添加到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

    我认为您可以覆盖 onNavigatedTo() 方法并将项目的颜色更改为默认值 . 在 (Frame).Navigate() 传递作为参数的另一帧 .SelectedItem 列表进行比较 . 对不起我的英语不好 .

  • 0

    如果我们将Collection设置为 ListBoxItemSource ,我们应该可以使用设置为 ListBox.SelectedItem . 当我的Collection是 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 . 然后我们可以设置 BackgroundForeground .

相关问题