我有一个ListView
,需要显示从数据库表中获取的所有行。同时,每行还要有两个编辑和删除按钮。由于我是初学者,所以在XAML中尝试了以下代码-
<ListView Height="352" HorizontalAlignment="Left" Margin="20,90,0,0" Name="Tab1lstProductCategories" VerticalAlignment="Top" Width="1008">
<ListView.View>
<GridView>
<GridViewColumn Header="Category Name" DisplayMemberBinding="{Binding Col1}" Width="200"/>
<GridViewColumn Header="Created Date" DisplayMemberBinding="{Binding Col2}" Width="200"/>
<GridViewColumn Header="Last Updated" DisplayMemberBinding="{Binding Col3}" Width="200"/>
<GridViewColumn Header="Edit" Width="200">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="Edit" Click="EditCategory" CommandParameter="{Binding Id}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Delete" Width="200">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="Delete" Click="DeleteCategory"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
我使用C#编写了-
DataTable dt=db.Select("select * from ProductCategories");
for (int i = 0; i < dt.Rows.Count; i++)
{
//Button edit, delete;
//edit = new Button();
//edit.Content="Edit";
//edit.Click += EditCategory;
//delete= new Button();
//delete.Content="Delete";
//delete.Click += DeleteCategory;
//edit.CommandParameter = dt.Rows[i]["Id"];
//delete.CommandParameter = dt.Rows[i]["Id"];
Tab1lstProductCategories.Items.Add(new { Col1 = dt.Rows[i]["CategoryName"], Col2 = dt.Rows[i]["CreatedDate"], Col3=dt.Rows[i]["LastUpdated"]});
}
private void EditCategory(object sender, RoutedEventArgs e)
{
Button b=sender as Button;
MessageBox.Show(b.CommandParameter.ToString());
}
private void DeleteCategory(object sender, RoutedEventArgs e)
{
}
我得到的结果是-
![在此输入图像描述](https://istack.dev59.com/8Gfyg.webp)
DataTemplate
时,绑定将自动使用ToString()
方法来显示内容。请使用CellTemplate
来解决此问题。 - Omri Btian