第十六章 資料繫結(二)

2021-09-20 01:18:49 字數 2202 閱讀 1041

雖然大多數資料繫結都是在xaml中定義的,但您應該知道如何在**中執行乙個。 這是在**中設定資料繫結的一種方式(但不是唯一的方法):

bindingcontext屬性由bindableobject定義。 (它是bindableobject定義的唯一屬性。)setbinding方法也由bindableobject定義,但bindableobjectextensions類中的setbinding方法還有兩個額外的過載。 target屬性被指定為bindableproperty; source屬性通常指定為字串。

opacitybindingcode程式建立兩個元素,label和slider,並定義乙個資料繫結,該繫結以slider的value屬性為目標的label的opacity屬性:

public class opacitybindingcodepage : contentpage

; slider slider = new slider

;// set the binding context: target is label; source is slider.

label.bindingcontext = slider;

// bind the properties: target is opacity; source is value.

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

// construct the page.

padding = new thickness(10, 0);

content = new stacklayout};}

}

這是連線兩個物件的屬性設定:

label.bindingcontext = slider;
label.setbinding(label.opacityproperty, "value");
setbinding的第乙個引數是bindableproperty型別,這是target屬性的要求。 但source屬性僅指定為字串。 它可以是任何型別的財產。

螢幕截圖演示了您不需要設定事件處理程式來使用slider來控制頁面上的其他元素:

當然,有人正在設定乙個事件處理程式。 在封面下,當繫結初始化自身時,它還通過從slider的value屬性設定label的opacity屬性來對目標執行初始化。 (正如您在上一章中發現的那樣,當您自己設定事件處理程式時,此初始化不會自動發生。)然後內部繫結**檢查源物件(在本例中為slider)是否實現了inotifypropertychanged介面。 如果是這樣,則在slider上設定propertychanged處理程式。 每當value屬性更改時,繫結都會將新值設定為label的opacity屬性。

在xaml中重現繫結涉及兩個您尚未看到的標記擴充套件:

x:reference繫結擴充套件非常簡單,但binding標記擴充套件是所有xamarin.forms中最廣泛和最複雜的標記擴充套件。 它將在本章的過程中逐步介紹。

以下是在xaml中設定資料繫結的方法:

opacitybindingxaml專案顯示完整的標記:

繫結的兩個標記擴充套件是label中的最後兩個屬性設定。 除了對initializecomponent的標準呼叫之外,**隱藏檔案不包含任何內容。

在標記中設定bindingcontext時,很容易忘記x:reference標記擴充套件並簡單地指定源名稱,但這不起作用。

binding標記表示式的path引數指定source屬性。 為什麼這個論點叫做path而不是property? 你會在本章後面看到原因。

您可以將標記縮短一點。 為reference提供支援的公共類是referenceextension,它將其content屬性定義為name。 bindingextension(不是公共類)的content屬性是path,因此您不需要name和path引數以及等號:

或者,如果您想使標記更長,可以將bindingcontext和opacity屬性作為屬性元素分解,並使用x的常規元素語法設定它們:引用和繫結:

正如您將看到的,對於繫結,使用屬性元素有時與資料繫結相關。

第十六章 資料繫結(六)

binding類定義了乙個名為path的屬性,用於設定源屬性名稱。但為什麼它被稱為path?為什麼不叫財產?path屬性被稱為它所呼叫的屬性,因為它不需要是乙個屬性。它可以是一組屬性,子屬性,甚至是與句點相關聯的索引器。以這種方式使用path可能很棘手,所以這裡有乙個名為bindingpathdem...

第十六章 tcp wrappers

在伺服器向外提供的tcp服務上包裝一層安全檢測機制。外來連線請求首先通過這個安全檢測,獲得安全認證後才可被系統服務接受。hosts.allow hosts.deny 在配置檔案中為各服務分別定義訪問控制規則實現訪問控制,檔案中的規則是即時生效的。配置檔案語法 1 daemon list client...

第十六章 執行緒棧

1 基礎 1 執行緒初始化時,執行緒棧預設1m,所有頁面都是page readwrite屬性,但只為前兩個頁面調撥了物理儲存器,位址低的那個頁面叫防護頁面,為其指定了page guard屬性 2 當執行緒訪問到防護頁面時,由於指定了page guard屬性,系統會得到通知,系統會為防護頁面的下乙個頁...