c# - 如何使用 MVVM 模式绑定 Datagrid?
问题描述
目标:
我目前的目标是连接 Datagrid 和 ViewModel。ViewModel 当前具有从 MySQL 获取数据的代码。
不知道从这里去哪里,或者我是否做得正确......
Technical_Fsqm.xaml
<Grid>
<TextBlock Text="FSQM"/>
<DataGrid x:Name="FSQMData"
AutoGenerateColumns="True"
ItemsSource="{Binding data}" Margin="0,106,0,0"/>
</Grid>
Technical_Fsqm.xaml.cs
public partial class Technical_Fsqm : UserControl
{
public Technical_Fsqm()
{
InitializeComponent();
this.DataContext = new Technical_FsqmVM();
}
}
技术_FsqmVM.cs
using Dapper;
public class Technical_FsqmVM : INotifyPropertyChanged
{
public List<FsqmModel> data()
{
string query = "select * from table;";
using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["MySQL"].ConnectionString))
{
var output = conn.Query<FsqmModel>(query).ToList();
return output;
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
模型
public class FsqmModel
{
public int Id { get; set; }
public string DocumentTitle { get; set; }
}
解决方案
无法使用方法创建绑定,只能使用属性:
public partial class Technical_Fsqm : UserControl
{
public Technical_Fsqm()
{
InitializeComponent();
var vm = new Technical_FsqmVM();
vm.LoadData();
this.DataContext = vm;
}
}
虚拟机
public List<FsqmModel> data { get; private set; }
public void LoadData();
{
string query = "select * from table;";
using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["MySQL"].ConnectionString))
{
data = conn.Query<FsqmModel>(query).ToList();
}
}
推荐阅读
- reactjs - 警告:React 检测到 UnconnectedImages 调用 Hooks 的顺序发生了变化。如果不修复,这将导致错误和错误
- python - 带状态的自定义渐变
- r - 删除 highcharter R 中的网格线
- reactjs - useEffect 导致无限循环
- shopify - 在 Shopify smartCollection 中获取产品位置
- javascript - 反应导航获取上一个屏幕的标题
- c# - 如何将带有文件的对象发布到后端?415 错误。c#, 角
- sql-server - 如何从视图中识别值属于哪个表?
- awk - awk 删除文件中带有字符的行
- c# - 使用 C# 的浏览器自动化 - 读写