- List item
WPF中Prism框架最直接拿到数据的方法
因为是最直接简便的去拿到数据库的数据:就不用去安装什么RestSharp
去封装。
就以已经创建好WebApi接口的前提下进行:
数据库的实体类:
public class Test()
{
public string Name;
public int Age;
}
到WPF里面:前提要先安装好Prism框架、创建好Views、ViewsModels 这两个文件夹
第一步:创建一个ApiService.cs 这个文件是用来去跟WebAPi进行一个通信的(很重要)
ApiService.cs
public class ApiService
{
public async Task<List<Test>> GetTestData()
//然后像这个List<>泛型里面放的Test就是我们数据库的实体类
{
using (HttpClient client = new HttpClient())
{
string apiUrl = "https://localhost:0000/api/Test/GetAll";
// 替换为实际你自己的Web API 地址
HttpResponseMessage response = await client.GetAsync(apiUrl);
if (response.IsSuccessStatusCode)
{
string json = await response.Content.ReadAsStringAsync();
List<Test> testData = JsonConvert.DeserializeObject<List<Test>>(json);
return testData;
}
else
{
return null;
}
}
}
}
第二步伐:MainViewModel.cs
public class MainViewModel: BindableBase
{
private readonly ApiService _apiService;
//把那个通信文件依赖注入进去
private ObservableCollection<Test> _testDataList;
public ObservableCollection<Test> TestDataList
{
get { return _testDataList; }
set { SetProperty(ref _testDataList, value); }
}
public MainViewModel(ApiService apiService)
{
_apiService = apiService;
LoadData();
}
private async void LoadData()
{
var testData = await _apiService.GetTestData();
if (testData != null)
{
TestDataList = new ObservableCollection<Test>(testData);
}
}
}
然后通过xaml的绑定,就可以拿到了,当时Bind要绑定接口给信息的字节段
<ListView ItemsSource="{Binding TestDataList}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Name}" />
<GridViewColumn DisplayMemberBinding="{Binding Age}" />
<!-- 添加更多需要展示的列 -->
</GridView>
</ListView.View>
</ListView>