silverlight: помогите с IEnumerable - PullRequest
       22

silverlight: помогите с IEnumerable

0 голосов
/ 27 октября 2010

Пожалуйста, мне нужна помощь:

У меня есть список, связанный с IEnumerable source

Person - это класс, который содержит следующие свойства: Name (строка), isChecked (bool)

Мне нужно изменить свойство «isChecked» для конкретного человека с именем «Боб»

Я не могу изменить стоимость имущества!

пожалуйста, помогите

Ответы [ 2 ]

1 голос
/ 27 октября 2010

Если вы пытаетесь обновить отображаемое значение при обновлении модели, вам, вероятно, нужно реализовать INotifyPropertyChanged в классе вашей модели, например,

public class Person : INotifyPropertyChanged
{
    public string Name
    {
        get
        {
            return this.name;
        }
        set
        {
            this.name = value;
            this.FirePropertyChanged("Name");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void FirePropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
0 голосов
/ 27 октября 2010

Полагаю, вам просто нужно изменить его один раз для просмотра?

В зависимости от того, сколько данных у вас есть, самый простой способ реализовать это расширить ваши данные в модели, например, на. List<>, затем внесите изменения и привяжите свой контроль к этому списку.

var people = myDataSource.ToList(); // a LINQ extension - you may need a 'using'
var bob = people.FirstOrDefault(p => p.Name == "Bob");
if (bob != null)
{
    bob.isChecked = true;
}

В качестве альтернативы и, возможно, лучше было бы внести изменения на лету, используя, например, a Выберите ()

var peopleWithBobTicked = myDataSource.Select(
    p => {
             if (p.Name == "BoB") p.isTicked = true;
             return p;
         });
...