选中复选框后更新Listview列

时间:2017-04-04 11:12:18

标签: wpf listview checkbox checked

我想在同一行中选中复选框时更新列表视图中的列。复选框是一行的一部分。

查看:

复选框:

<CheckBox Tag="{Binding ID}" Checked="chbAccount_checked" Unchecked="chbAccount_Unchecked"/>

需要更新的列中的文本块:

 <TextBlock Text="{Binding MyColumnValue }" />

代码背后:

private void chbAccount_checked(object sender, RoutedEventArgs e)
{
    CheckBox chb = sender as CheckBox;
    int Id= Convert.ToInt16(chb.Tag);
    ViewModel.UpdateColumnValue(Id);
    myListView.ItemsSource = ViewModel.Accounts;
    this.myListView.UpdateLayout();              
}

视图模型:

public void UpdateColumnValue(int Id)
{
    foreach(var a in Accounts)
    {
        if(a.ID == Id)
        {
            a.MyColumnValue = "Yes";
        }
    }
}

帐户列表正在更新,但列表视图未显示列中的修改值。我尝试过listview.item.refresh()刷新listview。没有工作。

请帮忙。谢谢!

1 个答案:

答案 0 :(得分:1)

为什么不将IsChecked的{​​{1}}属性绑定到视图模型的CheckBox源属性,并处理设置bool属性的逻辑视图模型类:

MyColumnValue
<CheckBox Tag="{Binding ID}" IsChecked="{Binding IsChecked}"/>

确保视图模型类正确实现INotifyPropertyChanged接口。