C # 数据绑定(1)——将DataTabel的data添加ListView
文/嶽永鹏
目标界面:
功能:通过响应UI Textbox 的值向ListView 绑定新添加的纪录。
UI XAML 代码
1 <Grid Margin="5"> 2 <Grid.ColumnDefinitions> 3 <ColumnDefinition Width="Auto"/> 4 <ColumnDefinition/> 5 </Grid.ColumnDefinitions> 6 <Grid.RowDefinitions> 7 <RowDefinition Height="Auto"/> 8 <RowDefinition Height="Auto"/> 9 <RowDefinition Height="Auto"/> 10 <RowDefinition Height="Auto"/> 11 <RowDefinition Height="Auto"/> 12 <RowDefinition Height="Auto"/> 13 <RowDefinition/> 14 </Grid.RowDefinitions> 15 <TextBlock Grid.Row="0" Grid.Column="0" Text="商品名称" HorizontalAlignment="Right" VerticalAlignment="Center" /> 16 <TextBox Grid.Row="0" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComName}" Name="tbkName"/> 17 <TextBlock Grid.Row="1" Grid.Column="0" Text="商品进货单价" HorizontalAlignment="Right" VerticalAlignment="Center" /> 18 <TextBox Grid.Row="1" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComInPrice}" Name="tbkInPrice"/> 19 <TextBlock Grid.Row="2" Grid.Column="0" Text="商品零售价格" HorizontalAlignment="Right" VerticalAlignment="Center" /> 20 <TextBox Grid.Row="2" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComOutPrice}" Name="tbkOutPrice"/> 21 <TextBlock Grid.Row="3" Grid.Column="0" Text="进货数量" HorizontalAlignment="Right" VerticalAlignment="Center" /> 22 <TextBox Grid.Row="3" Grid.Column="1" Margin="2" VerticalAlignment="Center" Text="{Binding Path=ComOutPrice}" Name="tbkComCount"/> 23 24 <Button Grid.Row="4" Grid.Column="1" Content="添加新纪录" Margin="2" Padding="2" Name="btnAdd" Click="btnAdd_Click" /> 25 26 <TextBlock Grid.Row="5" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="Black" /> 27 28 <ListView Name="lstDisplay" ItemsSource="{Binding}" Grid.Row="6" Grid.ColumnSpan="2"> 29 <ListView.View> 30 <GridView> 31 <GridView.Columns> 32 <GridViewColumn Header="AutoID" DisplayMemberBinding="{Binding AutoID}"/> 33 <GridViewColumn Header="商品名称" DisplayMemberBinding="{Binding ComName}"/> 34 <GridViewColumn Header="进货价格" DisplayMemberBinding="{Binding Path=ComInPrice,StringFormat={}{0:c}}"/> 35 <GridViewColumn Header="零售价格" DisplayMemberBinding="{Binding Path=ComOutPrice,StringFormat={}{0:c}}"/> 36 <GridViewColumn Header="进货数量" DisplayMemberBinding="{Binding ComCount}"/> 37 </GridView.Columns> 38 </GridView> 39 </ListView.View> 40 </ListView> 41 </Grid>
c# 后台代码
DataTable Commodity = newTable(); public MainWindow() { InitializeComponent(); //DataTable Commodity = newTable(); } private void btnAdd_Click(object sender, RoutedEventArgs e) { addNewMember(Commodity); lstDisplay.DataContext = Commodity; } private void btnDelete_Click(object sender, RoutedEventArgs e) { Button b = sender as Button; Int32 AutoID = Convert.ToInt32(b.CommandParameter); delMember(Commodity, AutoID); lstDisplay.DataContext = Commodity; lstDisplay.Items.Refresh(); } private DataTable delMember(DataTable Table,Int32 laction) { //Deleting a existed row in datatable Commodity; DataRow delRow = Table.Rows.Find(laction); Table.Rows.Remove(delRow); return Table; } private DataTable addNewMember(DataTable Table) { //inserting a new row in datatable Commodity; DataRow newRow = Table.NewRow(); newRow["ComName"] = tbkName.Text; newRow["ComInPrice"] = tbkInPrice.Text; newRow["ComOutPrice"] = tbkOutPrice.Text; newRow["ComCount"] = tbkComCount.Text; Table.Rows.Add(newRow); return Table; } private static DataTable newTable() { //Create a new table named Commodity DataTable commodity = new DataTable("Commodity"); //instert new columns DataColumn auto = new DataColumn("AutoID", typeof(Int32)); //setting the column auto increment auto.AutoIncrement = true; commodity.Columns.Add(auto); commodity.Columns.Add("ComName", typeof(string)); commodity.Columns.Add("ComInPrice", typeof(double)); commodity.Columns.Add("ComOutPrice", typeof(double)); commodity.Columns.Add("ComCount", typeof(System.Int32)); commodity.PrimaryKey = new DataColumn[] { commodity.Columns[0] }; return commodity; }