ListView - привязка данных listviewitem к объекту

1

Предположим, у меня есть следующий ListView:

<ListView Name="listView">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="IsTrue" DisplayMemberBinding="{Binding Path=IsTrue}"/>
            <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=name}" />
        </GridView>
    </ListView.View>
</ListView>

И следующий класс тестирования, который я хочу связать:

public class Test
{
    public Test(Boolean IsTrue, string name)
    {
        this.IsTrue = IsTrue;
        this.name = name;
    }

    public Boolean IsTrue { get; set; }
    public string name { get; private set; }
}

Вот команда, которую я использую для добавления ListViewItem:

Test a = new Test(false, "a");
listView.Items.Add(a);

Теперь, когда я пытаюсь изменить значение IsTrue объекта, значение IsTrue в ListView не будет обновляться. Почему так?

Теги:
xaml
wpf
listview

2 ответа

2
Лучший ответ
public class Test : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(PropertyChangedEventArgs args)
    {
        var e = PropertyChanged;
        if (e != null)
            e(this, args);
    }

    private bool isTrue;
    public Boolean IsTrue
    {
        get { return isTrue; }
        set
        {
            if (isTrue == value)
                return;
            isTrue = value;
            OnPropertyChanged(new PropertyChangedEventArgs("IsTrue"));
        }
    }

    public string Name { get; private set; }

    public Test(Boolean isTrue, string name)
    {
        this.isTrue = isTrue;
        Name = name;
    }
}
2

Вы должны реализовать интерфейс INotifyPropertyChanged для класса Test, поэтому, когда вы измените Свойство, пользовательский интерфейс получит уведомление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню