C#学习(九)- WP8.1开发的一些收获

本篇属于总结性记录,知识点会相对凌乱。

1. 关于SQLlite数据库的应用

  关于如何设置Visual Studio 2013使SQLlite数据库可用,参见http://www.cnblogs.com/tiny-home/p/4474861.html,在此不再赘述。主要分享我使用SQLlite过程中遇到的问题和收获。

  首先要建一个类,用以表示在SQLlite数据库中表示的记录,相当于普通数据库中的create语句,用来定义表中每条记录有多少列,每列是什么类型的量,每条记录就是一个对象。比如:

using SQLite;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Note.Model
{
    public class Notes:ModelBase
    {
     private int id;
        [AutoIncrement, PrimaryKey] //主键并且自增
        public int ID
        {
            get;
            set;
        }
        
        private string name;
        [MaxLength(1000)]
        public string Name
        {
            get { return name; }
            set
            { this.SetProperty(ref this.name, value); }
        }

        private string content;// = DateTime.Now.ToString();
        [MaxLength(3000)]
        public string Content

        {
            get { return content; }
            set
            { this.SetProperty(ref this.content, value); }
        }

        private bool isImportant;
        public bool IsImportant
        {
            get { return isImportant; }
            set
            { this.SetProperty(ref this.isImportant, value); }
        }
    }
}

这个和普通的类声明很像,中括号中是对各属性(各列)加的限制。有一个细节可能需要注意,在你使用Visual Studio 2013开发WP8.1,当你更改了数据表的定义(也就是改了这个类),你需要重启虚拟机,否则会出现错误。

增加记录:

public async void Add(Notes note)//增加记事
{
      SQLiteAsyncConnection conn = GetConn();
      await conn.InsertAsync(note);
}

查找记录:

SQLiteAsyncConnection conn = GetConn();
var
query = from note in conn.Table<Notes>() where note.ID == id select note;

删除记录:

public async void Delete(int id)//删除记事
 {
    SQLiteAsyncConnection conn = GetConn();
    var query = from note in conn.Table<Notes>()
                     where note.ID == id
                     select note;
    Notes notes = await query.FirstOrDefaultAsync();
    await conn.DeleteAsync(notes);
 }        

 

2. 关于数据的Binding

{Binding}  表示与上一层所绑定的数据绑定

{Binding MyProperty}  表示与上一层所绑定的对象的特定属性绑定

{Binding Object.MyProperty}  表示与特定对象的特定属性绑定,与上一级所绑定的内容不再有关系

另外{Binding **** }有一个属性“Mode”,比如可以这么写:Text="{Binding NoteDemo.Content, Mode=TwoWay}"

表示Text与NoteDemo.Content绑定,并且是双向的,就是说当后台的NoteDemo.Conten发生变化,在Text的值会跟着变。而当你修改Text的值时,后台的NoteDemo.Conten也会跟着变。这种属性在两个量绑定时将会有一点十分方便,你不用再想还要去保存一个暂时量,双向绑定后相当于会自动保存。

 

3. RadioButton的使用

  RadioButton就是选择框控件,用来确定某项是否被选择。如:

<RadioButton Content="重要"

         IsChecked="{Binding NoteDemo.IsImportant,Mode=TwoWay}"

        Height="69"

        Width="213"

        FontSize="24"  />

Content:指选择后的提示文字

IsChecked:选择框是否被选中,这里我将它与NoteDemo.IsImportant绑定,这是一个bool型变量

Height、Width:长和宽

FontSize:选择框的大小

    

posted @ 2015-05-17 17:50  永哼哼  阅读(254)  评论(0编辑  收藏  举报