listview中的wpf复选框双向绑定

本文关键字:绑定 复选框 中的 wpf listview | 更新日期: 2023-09-27 18:22:33

我有一个WPF应用程序,它使用实体框架与数据库通信。我在数据库中有4个字段。我的意图是,每当用户使用列表视图中的复选框选择任何特定列时,我都需要在单击按钮时更新数据库IsChecked属性。但它没有更新后端。。请帮助

public partial class Datagrid
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Location { get; set; }
        public Nullable<bool> IsChecked { get; set; }
    }
public partial class SampleDbContext : DbContext
{
 public virtual DbSet<Datagrid> Datagrids { get; set; }
}

CS代码:

public partial class MainWindow : Window
    {
        public ObservableCollection<Datagrid> data { get; set; }
        public List<Datagrid> lst = new List<Datagrid>();
        private SampleDbContext db;
        public MainWindow()
        {
            db = new SampleDbContext();
            lst = db.Datagrids.ToList();
            InitializeComponent();
            additems();
        }

        public void additems()
        {
            data = new ObservableCollection<Datagrid>(lst);
            this.DataContext = this;
        }
        private void btn_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Updated");
            this.db.SaveChanges();
        }
    }

Xaml:

<Grid>
        <ListView Name="lstCode" ItemsSource="{Binding data}" >

            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
                    <GridViewColumn Header="Location" DisplayMemberBinding="{Binding Location}"/>
                    <GridViewColumn Header="IsActive" Width="70">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox Name="chk" IsChecked="{Binding IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></CheckBox>
                            </DataTemplate>
                            </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>
        <Button Name="btn" Height="23" Margin="0,0,201,85" Content="Update" HorizontalAlignment="Right" VerticalAlignment="Bottom" RenderTransformOrigin="1.333,3.85" Click="btn_Click" />
    </Grid>

listview中的wpf复选框双向绑定

绑定通过类实现的INotifyPropertyChanged接口工作。只要特性发生更改,就会发出通知。

查看您的代码,更大的问题是它不是正确的MVVM格式。要了解并可能解决您的问题,您应该尝试在WPF中使用MVVM(模型视图视图模型)方法进行编码。

解释它的示例链接:

http://www.codeproject.com/Articles/100175/Model-View-ViewModel-MVVM-Explained