Emm*_*et 3 c# wpf datatable xaml
我需要帮助来完成我在 Visual Studio 中做的一个简单项目,只是为了学习一点编码。我想显示一个表,其中包含 WPF 中名为 Car 的类的对象,并且该表应该以编程方式完成。
因此,我在 MainWindow.xaml 中添加了一个 ListView 并将 GridView 的名称设置为 GridView1
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListView HorizontalAlignment="Center" Height="100" Margin="0,10,0,0" VerticalAlignment="Top" Width="100">
<ListView.View>
<GridView x:Name="GridView1">
<GridViewColumn/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
在 MainWindow.xaml.cs 中我这样做了
using System;
...
//Add this to use DataTable
using System.Data;
namespace Test
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//create some objects
Car ferrari = new Car("Ferrari","Front-Wheel");
Car mercedes = new Car("Mercedes","Rear-Wheel");
//create a DataTable
DataTable dt = new DataTable();
//add 2 columns
dt.Columns.Add("Vehicle Name");
dt.Columns.Add("Vehicle Drive");
//add 2 rows
dt.Rows.Add(ferrari.Name, ferrari.Drive);
dt.Rows.Add(mercedes.Name, mercedes.Drive);
//bind it to GridView
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是最后两行,Visual Studio 说它不包含“DataSource”和“DataBind”的定义或扩展方法,但我在网上看到的所有示例都使用它们。错误在哪里?
更改 xaml,使其看起来像这样:
<ListView HorizontalAlignment="Center" Height="100" Margin="0,10,0,0"
VerticalAlignment="Top" Width="250" ItemsSource="{Binding dt}">
<ListView.View>
<GridView x:Name="GridView1">
<GridViewColumn DisplayMemberBinding= "{Binding Path=Name}"
Header="Vehicle Name" Width="100"/>
<GridViewColumn DisplayMemberBinding= "{Binding Path=Drive}"
Header="Vehicle Drive" Width="100"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
更改后面的代码:
using System.Windows;
using System.Windows.Controls;
namespace SOWPF
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var carViewModel = new CarViewModel();
carViewModel.LoadCars();
this.DataContext = carViewModel;
}
}
}
Run Code Online (Sandbox Code Playgroud)
添加视图模型,您使用的是 ObservableCollection,而不是数据表。
using System.Collections.ObjectModel;
using System.Data;
namespace SOWPF
{
public class CarViewModel
{
public ObservableCollection<Car> dt { get; set; }
public void LoadCars()
{
dt = new ObservableCollection<Car>();
Car ferrari = new Car("Ferrari", "Front-Wheel");
Car mercedes = new Car("Mercedes", "Rear-Wheel");
dt.Add(ferrari);
dt.Add(mercedes);
}
}
public class Car
{
public Car(string name, string drive)
{
Name = name;
Drive = drive;
}
public string Name { get; set; }
public string Drive { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8552 次 |
| 最近记录: |