第七章:XAML vs. code(3)

屬性元素語法
這里有一些C#與第4章中的FramedText代碼相似。在一個語句中,它實例化一個Frame和一個Label,并將Label設置為Frame的Content屬性:

new Frame
{OutlineColor = Color.Accent,HorizontalOptions = LayoutOptions.Center,VerticalOptions = LayoutOptions.Center,Content = new Label{Text = "Greetings, Xamarin.Forms!"}
};

但是當你開始在XAML中復制它時,你可能會在設置Content屬性的時候變得有點困難:

<Frame OutlineColor="Accent"HorizontalOptions="Center"VerticalOptions="Center"Content=" what goes here? " />

如何將Content屬性設置為整個Label對象?
這個問題的解決方案是XAML語法的最基本特征。 第一步是將Frame標簽分成開始標簽和結束標簽:

<Frame OutlineColor="Accent"HorizontalOptions="Center"VerticalOptions="Center"></Frame>

在這些標簽中,添加兩個由元素(Frame)和您想要設置的屬性(Content)組成的標簽,并添加一個句點:

<Frame OutlineColor="Accent"HorizontalOptions="Center"VerticalOptions="Center"><Frame.Content></Frame.Content>
</Frame>

現在把標簽放在這些標簽中:

<Frame OutlineColor="Accent"HorizontalOptions="Center"VerticalOptions="Center"><Frame.Content><Label Text="Greetings, Xamarin.Forms!" /></Frame.Content>
</Frame>

該語法是如何將Label設置為Frame的Content屬性。
您可能想知道這個XAML功能是否違反了XML語法規則。 它不是。 這段時間在XML中沒有特殊含義,所以Frame.Content是一個完全有效的XML標簽。 然而,XAML強加了關于這些標簽的規則:Frame.Content標簽必須出現在Frame標簽中,并且不能在Frame.Content標簽中設置屬性。 設置為Content屬性的對象顯示為這些標記的XML內容。
一旦引入了這個語法,就需要一些術語。 在上面顯示的最終XAML代碼片段中:

  • 框架和標簽是用XML元素表示的C#對象。 它們被稱為對象元素。
  • OutlineColor,HorizontalOptions,VerticalOptions和Text是作為XML屬性提供的C#屬性。 他們被稱為財產屬性。
  • Frame.Content是以XML元素表示的C#屬性,因此稱為屬性元素。

屬性元素在現實生活中很常見。 本章和未來章節中將會看到許多示例,您很快就會發現屬性元素成為您使用XAML的第二本質。 但要小心:有時開發人員必須記得太多,以至于我們忘記了基本知識。 即使在您使用XAML一段時間后,您可能會遇到這樣的情況,即似乎無法將特定對象設置為特定屬性。 解決方案通常是一個屬性元素。

您還可以對簡單的屬性使用屬性元素語法,例如:

<Frame HorizontalOptions="Center"><Frame.VerticalOptions>Center</Frame.VerticalOptions><Frame.OutlineColor>Accent</Frame.OutlineColor><Frame.Content><Label><Label.Text>Greetings, Xamarin.Forms!</Label.Text></Label></Frame.Content>
</Frame>

現在,Frame的VerticalOptions和OutlineColor屬性以及Label的Text屬性都已成為屬性元素。 這些屬性的值始終是不帶引號的屬性元素的內容。
當然,將這些屬性定義為屬性元素沒有多大意義。 這是不必要的,一切都很冗長。 但它的工作原理應該如此。
讓我們進一步:不是將HorizontalOptions設置為“Center”(對應于靜態屬性LayoutOptions.Center),您可以將HorizontalOptions表示為屬性元素,并將其設置為LayoutOptions值并設置其各個屬性:

<Frame><Frame.HorizontalOptions><LayoutOptions Alignment="Center"Expands="False" /></Frame.HorizontalOptions><Frame.VerticalOptions>Center</Frame.VerticalOptions><Frame.OutlineColor>Accent</Frame.OutlineColor><Frame.Content><Label><Label.Text>Greetings, Xamarin.Forms!</Label.Text></Label></Frame.Content>
</Frame>```您還可以將LayoutOptions的這些屬性表示為屬性元素:

<Frame.HorizontalOptions><LayoutOptions><LayoutOptions.Alignment>Center</LayoutOptions.Alignment><LayoutOptions.Expands>False</LayoutOptions.Expands></LayoutOptions>
</Frame.HorizontalOptions>

`

您不能將屬性設置為屬性屬性和屬性元素。 這是設置屬性兩次,這是不允許的。 請記住,沒有其他內容可以出現在屬性元素標簽中。 設置為屬性的值始終是這些標記的XML內容。
現在你應該知道如何在XAML中使用StackLayout。 首先將Children屬性表示為屬性元素StackLayout.Children,然后將StackLayout的子元素作為屬性元素標記的XML內容。 下面是一個例子,第一個StackLayout的每個孩子都是另一個具有水平方向的StackLayout:

<StackLayout><StackLayout.Children><StackLayout Orientation="Horizontal"><StackLayout.Children><BoxView Color="Red" /><Label Text="Red"VerticalOptions="Center" /></StackLayout.Children></StackLayout><StackLayout Orientation="Horizontal"><StackLayout.Children><BoxView Color="Green" /><Label Text="Green"VerticalOptions="Center" /></StackLayout.Children></StackLayout><StackLayout Orientation="Horizontal"><StackLayout.Children><BoxView Color="Blue" /><Label Text="Blue"VerticalOptions="Center" /></StackLayout.Children></StackLayout></StackLayout.Children>
</StackLayout>

每個水平的StackLayout都有一個帶有顏色的BoxView和一個帶有該顏色名稱的標簽。
當然,這里的重復標記看起來相當可怕! 如果你想要顯示16種顏色怎么辦? 還是140? 一開始可能會有很多復制和粘貼成功,但如果您需要稍微改進視覺效果,那么您的狀態會很糟糕。 在代碼中,您可以在循環中執行此操作,但XAML沒有此功能。
當標記威脅過于重復時,您可以隨時使用代碼。 在XAML中定義一些用戶界面而在代碼中定義一些用戶界面是非常合理的。 但是還有其他的解決方案,你會在后面的章節中看到。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254245.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254245.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254245.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QtCreator5.12.6安裝圖文教程

前言接觸過Qt的同學肯定用過QtCreator,本id最近常用&#xff0c;也就寫個教程記錄一下安裝的過程。可能比較少人學過Qt&#xff0c;感覺Qt還是挺不錯的&#xff0c;做出來的界面還算好看&#xff0c;關鍵是跨平臺。說明&#xff1a;安裝的系統&#xff1a;win10專業版QtCreator…

H.264學習(一)——幀和場的概念

一、何謂場&#xff1f; 每個電視幀都是通過掃描屏幕兩次而產生的&#xff0c;第二個掃描的線條剛好填滿第一次掃描所留下的縫隙。每個掃描即稱為一個場。因此 25 幀/秒的電視畫面實際上為 50 場/秒 (若為 NTSC 則分別為 30 & 60 - 因為我是中國人&#xff0c;因此我采用 P…

【實踐】js實現隨機不重復抽取數組中元素

經過3個星期的時間終于用做完了學校的練習作品了&#xff0c;但是發現在用jq 做互動雖然很方便但卻帶來了不少的煩惱 所以在以后的日子里我要好好學 js 了&#xff01; 然后呢在博主之前學java 里面 另我最頭痛的就是做產生隨機不重復的數據了 今天自己再鞏固了一下以前的知識再…

RabbitMQ for windows

一、搭建環境 Rabbit MQ 是建立在強大的Erlang OTP平臺上&#xff0c;因此安裝RabbitMQ之前要先安裝Erlang。 erlang&#xff1a;http://www.erlang.org/download.html rabbitmq&#xff1a;http://www.rabbitmq.com/download.html 我目前使用的&#xff1a;http://pan.baidu.c…

圓環內外圓毛刺(凸起)缺口(凹陷)檢測halcon

文章目錄處理要求處理方法1方法一思路方法一halcon源碼處理效果處理方法2方法二思路方法二halcon源碼處理效果博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 處理要求 橢圓/圓環&#xff08;產品易變形&#xff0c;為橢圓&#xff09;內外圓…

什么是單播、多播和廣播br

什么是單播、多播和廣播   “單播”&#xff08;Unicast&#xff09;、“多播”&#xff08;Multicast&#xff09;和“廣播”&#xff08;Broadcast&#xff09;這三個術語都是用來描述網絡節點之間通訊方式的術語。那么這些術語究竟是什么意思&#xff1f;區別何在&#…

【Oracle Database】數據庫控制文件管理

移動控制文件 [oraclewallet01 ~]$ sqlplus / as sysdba SQL> set line 200 SQL> col name for a60 SQL> select status,name from v$controlfile;STATUS NAME ------- ------------------------------------------------------------/u01/app/oracle/oradata/wallet…

ADO接口簡介

源地址&#xff1a;http://blog.csdn.net/xiaobai1593/article/details/7449151 參考&#xff1a; 1. 百度文庫&#xff1a;http://wenku.baidu.com/view/8e2e99ecf8c75fbfc77db230.html 2. CSDN&#xff1a;http://blog.csdn.net/augusdi/article/details/7005597 接口概述&am…

jquery模擬可輸入的下拉框

//頁面html <div id"select" class"select" ><ul><c:forEach items"${movieCityList}" var"cy" varStatus"st"><li><a href"javascript:void(0)" onclick"selectOption($(this))…

圓環同心度測量halcon

文章目錄處理要求處理源碼處理結果博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 處理要求 測量圓環同心度 處理源碼 read_image (Image, C:/Users/22967/Desktop/圖像Barrel 20201024/201024 手機行業 攝像頭檢測/Barrel 背光/Pic_2020_…

IP組播與組播協議

IP組播與組播協議 2008-4-27來源:不詳 作者:佚名 點擊&#xff1a;次在Internet上&#xff0c;多媒體業務諸如&#xff1a;流媒體&#xff0c;視頻會議和視頻點播等&#xff0c;正在成為信息傳送的重要組成部分。點對點傳輸的單播方式不能適應這一類業務傳輸特性--單點發送多點…

Spring Cloud的應用程序—上下文服務

2019獨角獸企業重金招聘Python工程師標準>>> Spring Boot對于如何使用Spring構建應用程序有一個看法&#xff1a;例如它具有常規配置文件的常規位置&#xff0c;以及用于常見管理和監視任務的端點。Spring Cloud建立在此之上&#xff0c;并添加了一些可能系統中所有…

Xtreme8.0 - Kabloom dp

Xtreme8.0 - Kabloom題目連接&#xff1a; https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/kabloom Description The card game Kabloom is played with multiple decks of playing cards. Players are dealt 2 n cards, face up and arranged in two …

視頻編碼中封裝格式RMVB,AVI,264

常規理解 封裝格式&#xff08;也叫容器&#xff09;&#xff0c;就是將已經編碼壓縮好的視頻軌和音頻軌按照一定的格式放到一個文件中&#xff0c;也就是說僅僅是一個外殼&#xff0c;或者大家把它當成一個放視頻軌和音頻軌的文件夾也可以。說得通俗點&#xff0c;視頻軌相當…

halcon圓環完整度檢測

文章目錄處理要求程序源碼處理結果博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 處理要求 查找好的圓環&#xff0c;檢測圓環不良 程序源碼 read_image (Image, F:/HALCON/圓環完整性檢測/6.bmp) rgb1_to_gray (Image, GrayImage) v…

《SAS編程與數據挖掘商業案例》學習筆記之十五

繼續《SAS編程與數據挖掘商業案例》讀書筆記&#xff0c;本次重點&#xff1a;輸出控制 主要內容包含&#xff1a;log窗體輸出控制、output窗體輸出控制、ods輸出控制 1.log窗體輸出控制 將日志輸出到外部文件 proc printto log "f:\data_model\book_data\chapt9\newlog.t…

[轉載]MATLAB?movie?函數動態繪圖

原文地址&#xff1a;MATLAB movie 函數動態繪圖作者&#xff1a;小霖cheeronMATLAB movie 函數動態繪圖 電影動畫的好處就是&#xff0c;運行一次可以多次播放&#xff0c;甚至可以直接生成avi文件&#xff0c;直接獨立與Matlab環境播放。這是其它三種動畫制作方法所不具備的。…

圓環劃痕檢測halcon

文章目錄處理要求處理源碼處理效果博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 處理要求 查找圓環缺陷 處理源碼 read_image (Image, F:/HALCON/圓環劃痕處理/10_33221_ba4582f0e88ec79.bmp) rgb3_to_gray (Image, Image, Image, Image…

多播(組播)原理分析

為什么要使用多播:網 卡從網絡上接收到目標物理地址對應的所有bit位都為1的數據報時&#xff0c;會收到這條消息并將其上傳給驅動程序&#xff0c;網卡的這種工作模式稱為廣播模式&#xff0c;網卡的缺省工作模式包含直接模式和廣播模式。利用這一特性&#xff0c;UDP&#xff…

iftop

在類Unix系統中可以使用top查看系統資源、進程、內存占用等信息。查看網絡狀態可以使用netstat、nmap等工具。若要查看實時的網絡流量&#xff0c;監控TCP/IP連接等&#xff0c;則可以使用iftop。一、iftop是什么&#xff1f;iftop是類似于top的實時流量監控工具。官方網站&…