簡體   English   中英

WPF中的ListView復選框綁定兩種方式

[英]wpf checkbox in listview binding two way

我有一個使用實體框架與數據庫進行通信的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>

綁定通過類正在實現的INotifyPropertyChanged接口起作用。 每當屬性更改時,您都會通知。

查看您的代碼,更大的問題是它沒有正確的MVVM格式。 要學習並可能解決您的問題,您應該嘗試使用MVVM(Model-View-ViewModel)方法在WPF中進行編碼。

一個解釋它的示例鏈接:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM