将大量字段绑定到视图时的方法是什么
本文关键字:方法 是什么 视图 字段 绑定 | 更新日期: 2023-09-27 17:58:07
通过大量的帮助,我已经能够用SQLite数据库中的两个字段填充xaml视图。我正在构建这个视图/应用程序,只是为了帮助我理解数据绑定。我现在想知道两件事。主要问题是:
如果我在视图上有50个字段,我还会使用本例中使用的布局吗?
其次,
并不是说我对这种布局不满意(一点也不),但有更好的方法吗?
C#代码
private void Window_ContentRendered(object sender, EventArgs e)
{
Activity act = new Activity();
SQLiteConnection con = new SQLiteConnection(ClsVariables.StrDb);
con.Open();
var sqlText =string.Format("SELECT [Activity_Category], [Activity_Category_Sub] FROM tblActivity WHERE [ActivityID] = 1;");
var sqlCmd = new SQLiteCommand(sqlText, con);
using (var reader = sqlCmd.ExecuteReader())
{
if (reader.Read())
{
act.Activity_Category = reader["Activity_Category"] as string;
act.Activity_Category_Sub = reader["Activity_Category_Sub"] as string;
}
}
con.Close();
this.DataContext = act;
}
XAML代码:
<Window x:Class="TM.frmEdit"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Add/Edit/Delete" Height="195" Width="500" ContentRendered="Window_ContentRendered">
<Grid Name="GridMain">
<TextBlock Text="{Binding Activity_Category}" Height="26" Margin="10,50,0,0" VerticalAlignment="Top" Width="120"/>
<TextBlock Text="{Binding Activity_Category_Sub}" Height="26" Margin="10,90,0,0" VerticalAlignment="Top" Width="120"/>
</Grid>
</Window>
(1)有比在代码中创建sql字符串更好的查询方法。看看EntityFramework。这将简化您的生活,因为您将处理强类型类对象,而不是魔术(和脆弱)字符串。它还将简化对Reader
的依赖,并且必须一次填充一个字段的属性,这是不可扩展的。只需搜索"entityframework sqlite"即可获取信息。
(2) 如果您想进一步接受数据绑定,请将MVVM视为一种设计模式。正如terry所说,它将帮助你塑造数据,而不是依赖于原始的"表中的"表示。不过,我不同意他关于什么是ViewModel的观点,但这是因为我倾向于每个视图有一个VM,而不是每个模型有一个虚拟机。只是不同的方法:)
(3) 看看C#命名标准,停止用下划线分隔类属性。这可能是您的Sql标准,但一旦它成为对象属性,它就不再是Sql了,因此可以随心所欲地命名。
布局/视图实际上取决于您的需要,这就是数据绑定的美妙之处。
如果您有50个字段,但您的用户只关心2个字段,那么您只需要呈现这2个字段的数据。
为了获得更好的视图外观,您可以使用设计器,例如Blend来创建复杂的布局和动画。