将大量字段绑定到视图时的方法是什么

时间:2014-04-14 08:04:22

标签: c# wpf sqlite xaml

通过很多很棒的帮助 - 我已经能够使用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>

2 个答案:

答案 0 :(得分:2)

(1)有更好的方法来进行在代码中创建sql字符串的查询。看看EntityFramework。这将简化您的生活,因为您将处理强类型类对象而不是魔术(和脆弱)字符串。它还将简化您对Reader的依赖,并且必须一次填充一个字段的属性,这是不可扩展的。  只需搜索'entityframework sqlite'获取信息。

(2)如果您想进一步包含数据绑定,请将MVVM视为设计模式。正如特里所说,它将帮助你塑造你的数据,而不是依赖原始的'就像它在表中'表示。我不同意他的观点是什么是ViewModel,但那是因为我倾向于每个View有一个VM,而不是每个模型一个VM。只是不同的方法:)

(3)查看C#命名标准,并停止使用下划线命名类属性,将零件分开。这可能是你的Sql标准,但是一旦它成为一个对象属性,它就不再是一个sql的东西了,所以你可以这么命名。

答案 1 :(得分:1)

布局/视图实际上取决于您的需要,这就是数据绑定的美妙。

如果您有50个字段,但您的用户只关心2,那么您只需要显示2个字段的数据。

为了更好看的视图,您可以使用设计师 Blend 来创建复杂的布局和动画。