C#筆記之2(WPF DataBinding Part 1)

這貨弄好了可以減少model和view之間映射的代碼量唆鸡,說白了就是后臺(tái)數(shù)據(jù)更新自動(dòng)更新view上的控件內(nèi)容(一般是listview這類不定子控件數(shù)目的控件)涝影,所以最好是從剛開始寫程序的時(shí)候就使用而不是一開始采用人工方法后面再改(會(huì)比較頭痛)。
這里以DataGrid與數(shù)據(jù)的binding為例争占。ListView或者其他的控件可以類推燃逻。
出于易讀性考慮,這里先給出c#代碼然后再解釋xaml代碼臂痕。

// Main.xaml.cs
    public partial class MainWindow : Window
    {

        public List<Item> Items { get; set; }
        public MainWindow()
        {
            InitializeComponent();
            Items = new List<Item>();
            this.DataContext = this;
            items.Add(new Item { IsChecked = false, Id = 1, Name = "PC", Cost = 1000 });
            items.Add(new Item { IsChecked = false, Id = 2, Name = "Phone", Cost = 500 });
        }
    }
// Item.cs
public class Item{
  public bool IsChecked{get;set;}
  public int Id{get;set;}
  public string Name{get;set;}
  public int Cost{get;set}
}

這里稍微解釋一下伯襟,public int Id{get;set;}相當(dāng)于

private int _Id;
public int Id{
  get{
    return _Id;}
  set{
    _Id=value;}
}

這先告一段落,下面寫出xaml的代碼(設(shè)置控件大小等視覺效果的屬性我就不寫了)握童。

<!-- Main.xaml -->
    <DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox IsChecked="{Binding IsChecked}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTextColumn Header="Id" Binding="{Binding Id}"/>
            <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
            <DataGridTextColumn Header="Cost" Binding="{Binding Cost}"/>
        </DataGrid.Columns>
    </DataGrid>

注意到這里是直接在xaml里面設(shè)置的ItemsSource相對(duì)應(yīng)的binding姆怪。這會(huì)需要一些額外的工作(將Items設(shè)置為屬性以及設(shè)定DataContext: xaml binding對(duì)應(yīng)的變量名編譯器會(huì)直接在Datacontext下面尋找。)澡绩。更簡單的在辦法是直接在InitializeComponent();后面加上xx.ItemsSource = Items;其中xx是Datagrid的Name屬性稽揭。

image

弄好以后你會(huì)發(fā)現(xiàn)可以任意添加,刪除Items里的Item同時(shí)反映到我們的DataGrid上面去肥卡。
但是如果對(duì)List做出非添加刪除的修改(比如打亂排序)和更改某個(gè)元素的屬性溪掀,則并不能反映在上面。下篇文章我會(huì)講一講如何做到對(duì)List的操作都能造成相應(yīng)control內(nèi)容的更改召调。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末膨桥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子唠叛,更是在濱河造成了極大的恐慌只嚣,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艺沼,死亡現(xiàn)場離奇詭異册舞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)障般,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門调鲸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盛杰,“玉大人,你說我怎么就攤上這事藐石〖垂” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵于微,是天一觀的道長逗嫡。 經(jīng)常有香客問我,道長株依,這世上最難降的妖魔是什么驱证? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮恋腕,結(jié)果婚禮上抹锄,老公的妹妹穿的比我還像新娘。我一直安慰自己荠藤,他們只是感情好伙单,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著商源,像睡著了一般车份。 火紅的嫁衣襯著肌膚如雪谋减。 梳的紋絲不亂的頭發(fā)上牡彻,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音出爹,去河邊找鬼庄吼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛严就,可吹牛的內(nèi)容都是我干的总寻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼梢为,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼渐行!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铸董,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤祟印,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后粟害,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蕴忆,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年悲幅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了套鹅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片站蝠。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卓鹿,靈堂內(nèi)的尸體忽然破棺而出菱魔,到底是詐尸還是另有隱情,我是刑警寧澤吟孙,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布豌习,位于F島的核電站,受9級(jí)特大地震影響拔疚,放射性物質(zhì)發(fā)生泄漏肥隆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一稚失、第九天 我趴在偏房一處隱蔽的房頂上張望栋艳。 院中可真熱鬧,春花似錦句各、人聲如沸吸占。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矾屯。三九已至,卻和暖如春初厚,著一層夾襖步出監(jiān)牢的瞬間件蚕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工产禾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留排作,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓亚情,卻偏偏與公主長得像妄痪,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子楞件,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,180評(píng)論 25 707
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程衫生,因...
    小菜c閱讀 6,426評(píng)論 0 17
  • Data Binding 學(xué)習(xí)筆記 在Android系統(tǒng)中使用Java編寫邏輯代碼,而使用XML表示界面View土浸,...
    蕉下孤客閱讀 1,166評(píng)論 0 3
  • 好朋友突然告訴我,她分手了。我很震驚西篓,完全現(xiàn)場懵逼了愈腾。朋友已經(jīng)懷孕了,雙方也開始聊結(jié)婚的事了岂津,很和諧啊∈疲現(xiàn)在說分手...
    舒粒閱讀 708評(píng)論 0 0
  • 明天就是圣誕節(jié)啦,于是吮成,在偏僻的郊區(qū)住了這么久的四只橱乱,我們準(zhǔn)備明天進(jìn)城去感受一下圣誕節(jié)的氣氛。 雖然臨近考試粱甫,應(yīng)該...
    cuckoo醬閱讀 261評(píng)論 0 2