C Xamarin 資料繫結入門基礎

2022-01-10 05:33:19 字數 3553 閱讀 9800

c# xamarin 資料繫結入門基礎

目錄簡單的集合繫結

xamarin 單向、雙向繫結

xaml繫結

c#**繫結

在此之前,幾段偽**幫助像我一樣菜的同學入門。。。

假如說,有兩個控制項,乙個是滑動條(slider),乙個是顯示文字的標籤(label)。

slider slider = new slider()

;label label = new label();

label.text = slider.value.tostring();

滑動條(slider)滑動的最小單位是 1,初始化值是 10。

我們想用標籤(label)顯示滑動條的值,在**裡可以直接賦值。

label.text = slider.value.tostring();
但是,這樣只能獲取一次值,我們想滑動條每次滑動,標籤動態顯示滑動條的值,這時候就需要繫結。

方式1:

slider slider = new slider()

;label label = new label();

label.text = "666"; // 隨便初始化乙個值

label.bindingcontext = slider; // 與乙個物件相關聯

// 設定乙個繫結

// 將 label 型別的 text 與 slider 的 value 屬性繫結起來

label.setbinding(label.textproperty,"value");

方式2:

slider slider = new slider()

;label label = new label();

label.text = "666"; // 隨便初始化乙個值

binding binding = new binding()

;// 繫結

label.setbinding(label.textproperty, binding);

上面裡,有關鍵字需要記住

bindingcontext()、setbinding()、binding、source、path。

檢視-檢視繫結,即 ui 控制項間的繫結,使用 xaml **即可完成,不需要 c#**。

上一節中,使用 偽** 來作為示範,顯示了兩種繫結方式,下面將以兩種方式為例,編寫 xaml **的繫結。

首先,要建立資料來源

繫結資料使用然後按照第一種方式就行繫結

x:reference是拓展標記,在 xaml 標記中其他地方宣告的例項的引用。 指明所引用的元素的x:name。就是一種固定格式,主要是裡面的 name,要填寫資料控制項的x:name屬性。

表明操作是 binding ,即繫結資料,繫結的資料是 slider 的 value 屬性。

上面繫結方式,先在 bindingcontext 屬性中繫結資料來源物件,再在 text 屬性中繫結 資料來源物件 的 value 屬性。

第二種方式

第二種方式,直接使用繫結資料,source 設定要繫結的資料來源物件,path 繫結了這個物件的某個屬性。

為了讓介面好看一些,總結上面的**,寫成

但是上面的小數點位數太多,不符合我們需要的格式,我們可以使用 stringformat 對資料進行格式化。

text="'}
繫結列舉

繫結型別的bindingmode列舉:

上面的的資料繫結,是一對一的,而且是單向的資料繫結,是先有 slider 控制項,再在 label 中繫結。

而且實際場景,1對1並且資料雙向影響、1對多並且多個資料來源資料匯集到乙個控制項等。

單個控制項的不同屬性都可以繫結資料。 但是,每個控制項只能有乙個bindingcontext,因此,在該檢視上的多個資料繫結必須全部引用同一物件的屬性。

如果你使用上小節的第一種方式的話,那麼只能繫結=乙個物件和使用這個物件的屬性。

如果使用第二種方法,則可以繫結多個資料來源。

一對多-目標繫結源資料

根據之前的示例,假如 label 的多個屬性,同時要繫結不同的資料,可以這樣寫。

一對多-源物件繫結目標

上面的方法不太靈活,假設 label 是公用的,要在 label 裡面配置多個屬性的資料**,要通過自身編寫繫結,而且乙個屬性只能繫結乙個資料物件。

為了降低耦合度,降低 label 繫結資料的複雜程度,並且使得多個物件都可以修改 label 的屬性。

我們可以反過來,建立多個控制項,label 是資料來源,其他控制項是目標源,但是資料卻是從其他控制項提供給 label 的。有的繞,沒事,下面舉例說明。

label 不作任何處理,而 scaleslider 和 rotationslider 把 label 作為資料來源繫結,從繫結的定義來說, label 是資料來源, label 的屬性資料將 作為 目標控制項 scaleslider、 rotationslider 的屬性值。

咦?好像搞錯了,我們是要通過別的控制項,去修改 label 的屬性值,怎麼變成了用 label 的屬性值當作 此控制項 的屬性值了?

原因在於使用了 mode 。

onewaytosource 列舉:值從目標傳輸到源。

從繫結的**和定義來說,label 是資料來源,滑動條是目標,但是資料是反向流通的。

文字框雙向繫結

示例**如下

官方示例

微軟官方文件有乙個示例**量比較多,有興趣可以參考一下

mainpage.xaml 裡新增

mainpage.xaml.cs 裡,改成

public partial class mainpage : contentpage

;public mainpage()

}

執行後,會自動出現列表。

關於 listview ,後面的文章會更詳細地介紹。

SpringMVC資料繫結入門

public class user public void setname string name public integer getage public void setage integer age public contactinfo getcontactinfo public void s...

SpringMVC 資料繫結入門

1.資料型別,可以繫結基本資料型別,如int age,或者包裝型別如 integer age 兩者的區別 int 型別時,必填該引數,integer 可以為空.2.繫結陣列 3.繫結物件.3.同屬性的多個物件的繫結,先initbinder要繫結的物件 在對其進行繫結,訪問物件屬性時,用物件.屬性,不...

入門 WPF資料繫結 例項

binding物件的屬性 property description converter 轉換器elementname 繫結的源物件 fallbackvalue 繫結無法返回有效值時的預設顯示。mode 繫結方式 path屬性 relativesource 常用於自身繫結或者資料模板中來指定繫結的源物...