国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
WPF DataGrid ListView等控件Binding LINQ數(shù)據(jù)源

WPF DataGrid ListView等控件Binding LINQ數(shù)據(jù)源

Binding及與之配套的數(shù)據(jù)轉(zhuǎn)換和校驗(yàn)是WPF的核心。一些詳細(xì)的只是介紹,園子里到處都是,這里DebugLZQ不再贅述。

首先回顧下WPF常用的Binding數(shù)據(jù)源

1.控件屬性---控件的屬性與屬性Binding           

經(jīng)典的例子如下:

<TextBox Height="23" HorizontalAlignment="Left" Margin="28,42,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="{Binding Path=Value,ElementName=slider1,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>        <Slider Height="23" HorizontalAlignment="Left" Margin="28,94,0,0" Name="slider1" VerticalAlignment="Top" Width="225" />

重點(diǎn)是這里:

Text="{Binding Path=Value,ElementName=slider1,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"

2.Object數(shù)據(jù)源       

控件的屬性與一個(gè)內(nèi)存Object綁定,該對(duì)象所在類實(shí)現(xiàn)IPropertyChanged接口

using System.ComponentModel;//namespace Binding{    class Machine:INotifyPropertyChanged    {        #region INotifyPropertyChanged 成員        public event PropertyChangedEventHandler PropertyChanged;        #endregion        private int temperature;        public int Temperature        {            get { return temperature; }            set             {                temperature = value;                //引發(fā)事件                if (PropertyChanged != null)                {                    PropertyChanged.Invoke(this, new PropertyChangedEventArgs("temperature"));                }            }        }    }}

頁面布局如下:

using System.Windows;using System.Windows.Controls;using System.Windows.Data;namespace Binding{    /// <summary>    /// Window2.xaml 的交互邏輯    /// </summary>    public partial class Window2 : Window    {        Machine machine;        public Window2()        {            InitializeComponent();            //數(shù)據(jù)源            machine = new Machine();            //Binding            System.Windows.Data.Binding binding = new System.Windows.Data.Binding();            binding.Source = machine;            binding.Path = new PropertyPath("Temperature");            //            BindingOperations.SetBinding(textBox1, TextBox.TextProperty, binding);        }        private void button1_Click(object sender, RoutedEventArgs e)        {            System.Timers.Timer timer = new System.Timers.Timer();            timer.Interval = 500;            timer.Enabled = true;            timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);        }        void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)        {            machine.Temperature++;        }    }}

3.XML數(shù)據(jù)源     

不去多說,前面的博文中有類似的

4.ADO.NET中的DataTable  

即從數(shù)據(jù)庫獲得一個(gè)DataTable對(duì)象, Binding到DataGrid或ListView。

自定義數(shù)據(jù)庫表定義如下:

//----------直接DataTable數(shù)據(jù)源-------------------------------------DataTable dataTable = SQLHelper.GetDataTable();dataGrid1.ItemsSource = dataTable.DefaultView;

SQLHelper類如下,該靜態(tài)類之定義了一個(gè)方法用來獲得一個(gè)DataTable,下面的LINQ數(shù)據(jù)源使用相同的SQLHelper.GetDataTable()方法。

using System.Data.SqlClient;using System.Data;namespace Binding{    class SQLHelper    {        public static string connstring = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\VS2010Pros\Binding\Binding\Database1.mdf;Integrated Security=True;User Instance=True";                    public static DataTable GetDataTable()        {            using (SqlConnection conn = new SqlConnection(connstring))            {                string sql = @"select Id,Name,Age from tb_Student";                SqlDataAdapter sda = new SqlDataAdapter(sql, conn);                DataTable dt = new DataTable();                                sda.Fill(dt);                return dt;            }                    }    }}

在xaml中加入Binding,DataGrid控件定義如下:

<DataGrid AutoGenerateColumns="False" Height="130" HorizontalAlignment="Left" Margin="24,16,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="230" >            <DataGrid.Columns>                <DataGridTextColumn Header="Id" Width="60" Binding="{Binding Id}"/>                <DataGridTextColumn Header="Name" Width="100" Binding="{Binding Name}"/>                <DataGridTextColumn Header="Age" Width="60" Binding="{Binding Age}"/>            </DataGrid.Columns>        </DataGrid>

結(jié)果如下(因?yàn)镈ebugLZQ現(xiàn)在開啟的是XP系統(tǒng),所以界面有點(diǎn)丑):

5.LINQ 數(shù)據(jù)源  DataGrid ListView等控件Binding LINQ數(shù)據(jù)源                

主要是LINQ to DataSet 和LINQ to SQL。

首先是LINQ to DataSet Binding到ListView。其中的dataTable獲取方法和上面的一樣。

            //----------Linq to DataSet數(shù)據(jù)源----------------------------------------            var query = from row in dataTable.Rows.Cast<DataRow>()                        where Convert.ToString(row["Name"]).StartsWith("D")                        select new                        {                            Id=int.Parse(row["Id"].ToString()),                            Name=row["Name"].ToString(),                            Age = int.Parse(row["Age"].ToString())                        };                        listView1.ItemsSource = query;

ListView 定義及Binding如下:

        <ListView Height="100" HorizontalAlignment="Left" Margin="24,173,0,0" Name="listView1" VerticalAlignment="Top" Width="224" >            <ListView.View>                <GridView>                    <GridViewColumn Header="Id" Width="60" DisplayMemberBinding="{Binding Id}"/>                    <GridViewColumn Header="Name" Width="100" DisplayMemberBinding="{Binding Name}"/>                    <GridViewColumn Header="Age" Width="60" DisplayMemberBinding="{Binding Age}"/>                </GridView>            </ListView.View>        </ListView>

結(jié)果如下:

下面給是LINQ to SQL 數(shù)據(jù)源Binding到DataGrid控件。

 用來映射tb_Student表的Student類定義如下:

using System.Data.Linq.Mapping;namespace Binding{    [Table(Name="tb_Student")]    class Student    {        [Column(IsPrimaryKey = true, DbType = "Int NOT NULL IDENTITY", IsDbGenerated = true, Name = "Id")]        public int Id { get; set; }        [Column(DbType = "nvarchar(20)", Name = "Name")]        public string Name { get; set; }        [Column(DbType = "int", Name = "Age")]        public int Age { get; set; }    }}

對(duì)數(shù)據(jù)源的LINQ操作如下,隨便寫了一個(gè):

//---------Linq to SQL 數(shù)據(jù)源------------------------------------System.Data.Linq.DataContext dc = new System.Data.Linq.DataContext(SQLHelper.connstring );var students= dc.GetTable<Student>();var query_2 = from s in students        where s.Name.Contains("D")        select s;dataGrid2.ItemsSource = query_2;

DataGrid 定義及Binding如下:

<DataGrid AlternatingRowBackground="#FFAACC0B" AutoGenerateColumns="False" Height="130" HorizontalAlignment="Left" Margin="267,74,0,0" Name="dataGrid2" VerticalAlignment="Top" Width="230">            <DataGrid.Columns>                <DataGridTextColumn Binding="{Binding Id}" Header="Id" Width="60"   />                <DataGridTextColumn Binding="{Binding Name}" Header="Name" Width="100" />                <DataGridTextColumn Binding="{Binding Age}" Header="Age" Width="60"  />            </DataGrid.Columns>        </DataGrid>

程序運(yùn)行結(jié)果如下:

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
《深入淺出WPF》學(xué)習(xí)筆記之深入淺出話Binding
Silverlight實(shí)例教程 – Datagrid,Dataform數(shù)據(jù)驗(yàn)證和ValidationSummary
在可編輯datagrid中,使用my97日期控件
在WPF中獲取DataGridTemplateColumn模板定義的內(nèi)容控件
wpf之DataGrid綁定DataTable,其中DataGridComboBoxColumn雙向綁定枚舉enum
使用 Networking取回?cái)?shù)據(jù)并填充DataGrid | Silverlight中文社...
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服