長期以來,XAML Behaviors都是WPF/Silverlight開發(fā)中一個(gè)令人懊惱的部分。盡管用處極大,但該庫的分發(fā)和維護(hù)方法有些奇怪。隨著XAML Behaviors開源公告的發(fā)布以及相應(yīng)NuGet包的創(chuàng)建,該問題最終得到了解決。
XAML Behaviors非常重要,因?yàn)樗鼈兲峁┝艘环N方法,讓開發(fā)人員能夠以一種簡潔、可重復(fù)的方式輕松地向UI對象添加功能。他們無需創(chuàng)建控件的子類或重復(fù)編寫邏輯代碼,只要簡單地增加一個(gè)XAML代碼片段。下面的例子摘自Anoop Madhusudanan題為“Silverlight和WPF中的Behaviors、Triggers和Actions讓事情變得簡單”的博文:
諸如MouseDragElementBehavior這樣的行為有OnAttached和OnDetaching方法。這些方法主要是用于添加事件處理函數(shù),雖然它們也可以以一種使用常規(guī)XAML語法無法實(shí)現(xiàn)的方式修改屬性。
XAML Behaviors的應(yīng)用通常要視具體情況而定。不過,如果將行為與附屬屬性配對,就可以借助樣式更廣泛地應(yīng)用它們。
所有這些便利都是有代價(jià)的。XAML Behaviors是作為Blend System.Windows.Interactivity庫的一部分提供。由于是在.NET之外單獨(dú)提供,所以常常很難獲得它。即使在大部分庫在NuGet上提供了之后,開發(fā)人員常常還是不得不求助于由好心的開發(fā)人員所提供的非官方程序包,其中(有望)包含該庫的真實(shí)版本。即使到現(xiàn)在,也很難弄清楚哪個(gè)才是官方支持的版本。
隨著XAML Behaviors for UWP發(fā)布,所有這一切正在發(fā)生變化。最重要的是,XAML Behaviors現(xiàn)在開源了,其庫托管在GitHub上。官方NuGet程序包包括UWP原生和托管版本。
貢獻(xiàn)模型
Jon Chu寫道:
一個(gè)由微軟最有價(jià)值專家(MVP)領(lǐng)導(dǎo)者組成的委員會將會評估貢獻(xiàn),以確保項(xiàng)目的質(zhì)量和發(fā)展方向。該項(xiàng)目委員會將會接收和評論社區(qū)提交的pull request。
隨著開源項(xiàng)目的發(fā)展,會有更多的貢獻(xiàn)者為Behaviors作貢獻(xiàn),我們計(jì)劃調(diào)整項(xiàng)目結(jié)構(gòu),向?yàn)轫?xiàng)目增添最大價(jià)值的貢獻(xiàn)者授權(quán)。不管是通過代碼、文檔,還是其他改進(jìn)Behaviors的方式,我們的目標(biāo)是讓社區(qū)對Behaviors有更大的控制權(quán),并授權(quán)用戶構(gòu)建和添加他們最希望看到的特性。
WPF支持
有關(guān)WPF支持方面,Jon Chu寫道:
截至目前,XAML Behaviors還沒有針對WPF的開源版本。不過,我們愿意繼續(xù)發(fā)展Behaviors。針對WPF等的跨平臺Behaviors當(dāng)然在路線圖上,如果社區(qū)對此感興趣,我們將來當(dāng)然會帶來新的Behaviors。
查看英文原文:Microsoft Open Sources XAML Behaviors