Ram349 Ответов: 1

На основе нажатия кнопки Выберите все элементы из списка с помощью WPF MVVM


Всем Привет,
я пытаюсь реализовать SelectAll/UnSelectAll и несколько элементов, выбранных из списка, используя Wpf MVVM.но я получаю проблему в ViewModel.я написал следующий код.кто-нибудь из вас не мог бы поделиться со мной решением.
код XAML
<ListBox Name="lstReferenc" ItemsSource="{Binding Granularitylist}" DisplayMemberPath="Name" 
                             SelectionMode="Extended"  Margin="103,8,9,8" SelectedValuePath="Name"  >
                        <ListBox.ItemContainerStyle>
                            <Style TargetType="{x:Type ListBox}">
                                <Setter Property="IsSelected" Value="{Binding IsSelected}" />
                            </Style>
                        </ListBox.ItemContainerStyle></ListBox><pre>
In View Model Code is 
 public ICommand SelectAll { get; private set; }
        public ICommand UnSelectAll { get; private set; }
public ExtractInfoVM()
        {
            try
            {
                VendorList= GetVendors();
                
                SelectAll = new DelegateCommand(SelectAllmethod);
                UnSelectAll = new DelegateCommand(UnSelectAllmethod);
            }
            catch (Exception ex)
                {
                    throw ex;
                }

        }
public void SelectAllmethod()
        {
            foreach (item i in yourCollection)
            {
                i.IsSelected = true;
            }
        }
here i am getting  compile time error cause of 'item'

What I have tried:

and i tried to implement multiple items selected from but when i debugging it's display single item only for that i am using below code 
<pre>public List<string> _SelectedGranularityItems;
        public List<string> SelectedGranularityItem
        {
            get { return _SelectedGranularityItems; }
            set { _SelectedGranularityItems = value; }
        }


Кто-нибудь из вас не мог бы мне помочь.

1 Ответов

Рейтинг:
0

Richard Deeming

Цитата:
я написал следующий код.
foreach (item i in yourCollection)
{
    i.IsSelected = true;
}

Вы явно не писали этот код. Вы нашли какой-то псевдокод, размещенный где-то *, и скопировал его в свой проект, не потрудившись понять, что он делает или какие детали вам нужно заменить.

Вам нужно заменить item с типом предметов в вашей коллекции или с var ключевое слово. Вы не сказали нам типовое название предметов в вашей коллекции, так что вам придется разобраться с этим самостоятельно.

Вам нужно заменить yourCollection с именем свойства или поля, в котором хранится ваша коллекция. На первый взгляд, это было бы либо Granularitylist или VendorList - вы упомянули и то, и другое в своем вопросе, и неясно, какую коллекцию вы пытаетесь использовать.

Какой бы тип ни был в вашей коллекции, вам нужно будет убедиться, что он имеет публичный доступ. IsSelected логическое свойство. Вам также нужно будет починить свой ItemContainerStyle, который в настоящее время нацелен на ListBox вместо ListBoxItem.

Я предлагаю вам вернуться туда, где вы нашли код, перечитать весь пост и попытаться понять его. Не просто случайно копируйте блоки кода в свой проект, не понимая, что они делают!


* По предположению, вы скопировали код из этот ответ StackOverflow[^].