Как программно выбрать элемент списка - PullRequest
0 голосов
/ 07 октября 2018

Я делаю программное обеспечение для управления библиотекой.Когда пользователь нажимает на книгу, я хочу отобразить полную информацию о книге.Одним из свойств типа Book является Теги.Поскольку в книге может быть много тегов, я решил использовать представление списка для отображения тегов.

Я хочу выбрать теги в виде списка.Как мне это сделать?Я нашел этот вопрос .В принятом ответе говорится, что нужно использовать метод ListView.Select(), которого, к сожалению, не существует.Также ListView.Items[0].Selected = true; не компилируется.Это ошибка:

Ошибка CS1061 «объект» не содержит определения «Выбрано», и доступный метод расширения «Выбранный», принимающий первый аргумент типа «объект», не найден (естьВы пропустили директиву using или ссылку на сборку?)

Редактировать: Кто-то спросил код.Вот оно.

Это список:

<ListView x:Name="TagsListView"
                  SelectionMode="Multiple"
                  ItemsSource="{x:Bind Tags}"
                  Grid.Row="4"
                  Grid.Column="1"/>

Это код:

public sealed partial class BookInfo_View : Page
{
    //don't worry about DataAccess. 
    private Book book = new Book();
    private List<string> Tags = DataAccess.GetTags();

    public BookInfo_View()
    {
        this.InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        book = (Book)e.Parameter;

        //dont worry about how this works. This line of code gives me the tags
        string[] selectedTags = book.Tags.Split(';', System.StringSplitOptions.RemoveEmptyEntries);

        //here i want to select the selected tags
    }
}

Это класс книги:

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public string Publisher { get; set; }
    public string ISBN { get; set; }

    public int Quantity { get; set; }

    public string CoverImageLocation { get; set; }

    public string Tags { get; set; }
}

Редактировать: Я чувствую, что вы, люди, не поняли вопрос.Проблема в том, что

ListView.Items[0].Selected = true;

Приведенная выше строка кода не компилируется!Выдает ошибку, указанную выше

Ответы [ 3 ]

0 голосов
/ 07 октября 2018

основано на это , я думаю, вы должны добавить свои теги в TagsListView.SelectedItems

0 голосов
/ 08 октября 2018

Поскольку вы обновляете ListView выбранные элементы в OnNavigatedTo, ваш ListView может не инициализироваться с данными в то время, вместо этого попробуйте обновить событие ListView in page Loaded, как показано ниже.

public sealed partial class BookInfo_View : Page
{
    //don't worry about DataAccess. 
    private Book book = new Book();
    private List<string> Tags = DataAccess.GetTags();
    private string[] selectedTags;

    public BookInfo_View()
    {
        this.InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        book = (Book)e.Parameter;

        //dont worry about how this works. This line of code gives me the tags
        selectedTags = book.Tags.Split(';', System.StringSplitOptions.RemoveEmptyEntries);

        //here i want to select the selected tags
        this.Loaded += OnPageLoaded;
    }

    private void OnPageLoaded(object sender, RoutedEventArgs e)
    {
       foreach (string selectedTag in selectedTags)
       {
         TagsListView.SelectedItems.Add(selectedTag);
       }
    }
}
0 голосов
/ 07 октября 2018

ListView.Select() просто активирует элемент управления (устанавливает на него фокус) и не выбирает его элементы, поэтому это не то, что вы ищете.

Но этот, который вы уже упомянули, является ответом дляВаш вопрос:

ListView1.Items[0].Selected = true;

однако вы должны использовать свойство Name для ожидания экземпляра ListView, а не ListView.это должно быть что-то вроде listView1, если вы не переименовали его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...