c# - ListView - 将 listviewitem 数据绑定(bind)到对象

标签 c# xml wpf xaml listview

假设我有以下 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>

以及我要绑定(bind)的以下测试类:

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 值时,ListView 上的 IsTrue 值不会更新。为什么会这样?

最佳答案

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;
    }
}

关于c# - ListView - 将 listviewitem 数据绑定(bind)到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25648747/

相关文章:

c# - 画一个点

.net - margin 中的属性顺序

c# - 如何使用 IList 上的 LINQ 扩展来查询嵌套对象中的值?

c# - 逻辑现在是多态而不是 Switch,但是构造呢?

javascript - SAP UI5 : Fill XML-Dropdown dynamically using Lifecycle Hook Function

SQL 使用 sys.fn_xe_file_target_read_file 导入扩展事件文件如何仅获取自上次导入以来的值

C# 程序列出用户和他们各自的目录路径

c# - Xamarin.Forms如何根据条件绑定(bind)背景颜色

xml - VoiceXML 和 TwiML/PlivoXML 之间有什么区别?

c# - 提高 WPF 列表框的绘制速度