国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【W(wǎng)PF系列】- XAML語法規(guī)范

這篇具有很好參考價值的文章主要介紹了【W(wǎng)PF系列】- XAML語法規(guī)范。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

【W(wǎng)PF系列】- XAML語法規(guī)范

一、概述

定義XAML語法術(shù)語是XAML語言規(guī)范中進(jìn)行定義或引用。XAML是基于XML的語言,遵循或擴(kuò)展XML結(jié)構(gòu)規(guī)則。XAML是基于描述XML語言或XML文檔對象模型時常用的術(shù)語。

XAML是一種標(biāo)記語言。CLR是可實現(xiàn)運(yùn)行時語言。XAML不是CRL運(yùn)行一部分。僅是使用于WPF的XAML時實例化運(yùn)行的一種表達(dá)形式。

二、對象元素語法

對象元素語法是 XAML 標(biāo)記語法,通過聲明 XML 元素來實例化 CLR 類或結(jié)構(gòu)。 此語法類似于其他標(biāo)記語言(如 HTML)的元素語法。 對象元素語法以左尖括號 (<) 開頭,后面緊跟進(jìn)行實例化的類或結(jié)構(gòu)的類型名稱。 零個或多個空格可以跟在類型名稱后面,零個或多個屬性也可以在對象元素上聲明,使用一個或多個空格分隔每個屬性名稱=“值”對。對象元素必須滿足一下條件之一:

  • 元素和標(biāo)記必須以正斜杠 (/) 結(jié)尾,后面緊跟右尖括號 (>)。
  • 開始標(biāo)記必須以右尖括號 (>) 結(jié)尾。 其他對象元素、屬性元素或內(nèi)部文本可以跟在開始標(biāo)記后面。 此處可能包含的確切內(nèi)容通常受元素的對象模型約束。 對象元素的等效結(jié)束標(biāo)記也必須存在,與其他開始和結(jié)束標(biāo)記對進(jìn)行正確的嵌套和平衡。

實例一:

<TextBox Text="TextBox"  Width="120"/>

實例二:

<TextBox Text="TextBox"  Width="120"></TextBox>

三、特性語法(屬性)

特性語法是 XAML 標(biāo)記語法,它通過對現(xiàn)有對象元素聲明特性來設(shè)置屬性的值。 特性名稱必須與支持相關(guān)對象元素的類的屬性的 CLR 成員名稱匹配。 特性名稱后跟賦值運(yùn)算符 (=)。 特性值必須是括在引號中的字符串。

若要通過特性語法進(jìn)行設(shè)置,屬性必須是公共屬性,并且必須可寫。 后備類型系統(tǒng)中屬性的值必須是值類型,或者必須是在訪問相關(guān)后備類型時可由 XAML 處理器實例化或引用的引用類型。

對于 WPF XAML 事件,作為特性名稱引用的事件必須是公共的,并且具有公共委托。

四、特性值的處理

左和右引號中包含的字符串值由 XAML 處理器進(jìn)行處理。 對于屬性,默認(rèn)處理行為由基礎(chǔ) CLR 屬性的類型確定。

特性值會按此處理順序,使用以下內(nèi)容之一進(jìn)行填充:

  1. 如果XAML處理器遇到大括號或派生自MarkupExtension的對象元素,則首先計算引用的標(biāo)記擴(kuò)展,而不是將值作為字符串進(jìn)行處理,標(biāo)記擴(kuò)展返回的對象會用作值。 在許多情況下,標(biāo)記擴(kuò)展返回的對象會是對現(xiàn)有對象的引用,或者是將計算延遲到運(yùn)行時的表達(dá)式,不是新實例化的對象。
  2. 如果使用特性化TypeConverter聲明屬性,或者使用特性化TypeConverter聲明該屬性的值類型,則特性的字符串值會作為轉(zhuǎn)換輸入提交到類型轉(zhuǎn)換器,轉(zhuǎn)換器會返回新的對象實例。
  3. 如果沒有TypeConverter,則嘗試直接轉(zhuǎn)換為屬性類型。此最終在 XAML 語言基元類型之間對分析器本機(jī)值進(jìn)行直接轉(zhuǎn)換,或者檢查枚舉中命名常量的名稱(分析器隨后會訪問匹配值)。

五、枚舉特性值

XAML 中的枚舉由 XAML 分析器以內(nèi)部方式進(jìn)行處理,枚舉的成員應(yīng)通過指定枚舉命名常量之一的字符串名稱來指定。對于非標(biāo)志枚舉值,本機(jī)行為是處理特性值的字符串并將它解析為枚舉值之一。無需如同在代碼中一樣,以“枚舉.值”格式指定枚舉。 而是僅指定值,枚舉通過所設(shè)置的屬性類型進(jìn)行推斷。 如果以“枚舉.值”形式指定特性,則不會正確進(jìn)行解析。

對于按標(biāo)志枚舉,行為基于 Enum.Parse方法。 可以通過用逗號分隔每個值,為按標(biāo)志枚舉指定多個值。 但是,不能合并不按標(biāo)志的枚舉值。

六、屬性和事件成員名稱引用

指定屬性時,可以引用以針對包含對象元素實例化的 CLR 類型的成員形式而存在的任何屬性或事件?;蛘呖梢砸锚?dú)立于包含對象元素的附加屬性或附件事件。

使用 typeName.event 部分限定名稱對可通過默認(rèn)命名空間訪問的任何對象中的任何事件進(jìn)行命名;此語法支持為路由事件附加處理程序,其中處理程序旨在處理從子元素路由的事件,但父元素在其成員表中也不包含該事件。 此語法類似于附加事件語法,但此處的事件不是真正的附加事件。 而是使用限定名稱引用事件。

七、屬性元素語法

屬性元素語法是一種與元素的基本 XML 語法規(guī)則有一些差異的語法。 在 XML 中,特性的值是事實上的字符串,唯一可能的變化是所使用的字符串編碼格式。 在 XAML 中,可以分配其他對象元素作為屬性的值。 屬性元素語法在默認(rèn)情況下會啟用此功能。 屬性不是在元素標(biāo)記中指定為特性,而是采用 elementTypeName.propertyName 形式,使用開始元素標(biāo)記進(jìn)行指定,在其中指定屬性的值,然后結(jié)束屬性元素。具體而言,語法以左尖括號 (<) 開頭,后面緊跟屬性元素語法包含在其中的類或結(jié)構(gòu)的類型名稱。 緊接著是單個點(diǎn) (.),然后是屬性的名稱,再然后是右尖括號 (>)。 與特性語法一樣,該屬性必須存在于指定類型的已聲明公共成員中。

屬性元素語法實例:

<Button>
  <Button.ContextMenu>
    <ContextMenu>
      <MenuItem Header="1">First item</MenuItem>
      <MenuItem Header="2">Second item</MenuItem>
    </ContextMenu>
  </Button.ContextMenu>
  Right-click me!
</Button>

八、集合語法

XAML 規(guī)范要求 XAML 處理器實現(xiàn)標(biāo)識值類型為集合的屬性。 .NET 中的常規(guī) XAML 處理器實現(xiàn)基于托管代碼和 CLR,它通過下列方法之一標(biāo)識集合類型:

  • 類型實現(xiàn)IList
  • 類型實現(xiàn)IDictionary
  • 類型派生自Array

如果屬性的類型是集合,則推斷的集合類型不需要在標(biāo)記中指定為對象元素。 相反,旨在成為集合中的項的元素被指定為屬性元素的一個或多個子元素。

<Style x:Key="SpecialButton" TargetType="{x:Type Button}">
  <Style.Triggers>
    <Trigger Property="Button.IsMouseOver" Value="true">
      <Setter Property = "Background" Value="Red"/>
    </Trigger>
    <Trigger Property="Button.IsPressed" Value="true">
      <Setter Property = "Foreground" Value="Green"/>
    </Trigger>
  </Style.Triggers>
</Style>

九、XAML 內(nèi)容屬性

XAML 內(nèi)容語法是一種僅在指定 ContentPropertyAttribute 作為類聲明一部分的類上啟用的語法。 ContentPropertyAttribute會引用作為該類型元素(包括派生類)的內(nèi)容屬性的屬性名稱。 由 XAML 處理器進(jìn)行處理時,在對象元素的開始標(biāo)記與結(jié)束標(biāo)記之間找到的任何子元素或內(nèi)部文本都會分配給該對象的 XAML 內(nèi)容屬性值。 允許為內(nèi)容屬性指定顯式屬性元素,但此用法通常不會出現(xiàn)在 .NET 參考的 XAML 語法部分中。 顯式/詳細(xì)技術(shù)偶爾對使標(biāo)記清晰或是在標(biāo)記樣式方面有價值,但內(nèi)容屬性的意圖通常是簡化標(biāo)記,以便可以直接嵌套直觀上以父子形式相關(guān)的元素。 按照嚴(yán)格的 XAML 語言定義,元素上其他屬性的屬性元素標(biāo)記不會分配為“內(nèi)容”;它們以前按 XAML 分析器的處理順序進(jìn)行處理,不被視為“內(nèi)容”。

  • XAML 內(nèi)容屬性值必須是連續(xù)的

AML 內(nèi)容屬性的值必須完全在該對象元素的其他任何屬性元素之前或之后指定。 無論 XAML 內(nèi)容屬性的值是指定為字符串還是一個或多個對象,情況都是如此。 例如,以下標(biāo)記不會進(jìn)行分析:

<Button Margin="67,45,202,245">
    <Button.Background>Blue</Button.Background>
    <Button.FontSize>Bold</Button.FontSize>
    <Button.Foreground>#FFFFF5F5</Button.Foreground>
    <Button.Content>這是一個有背景的按鈕</Button.Content>
</Button>

十、內(nèi)容屬性和集合語法組合

若要接受多個對象元素作為內(nèi)容,內(nèi)容屬性的類型必須明確為集合類型。 與集合類型的屬性元素語法類似,XAML 處理器必須標(biāo)識屬于集合類型的類型。 如果元素具有 XAML 內(nèi)容屬性,并且 XAML 內(nèi)容屬性的類型是集合,則隱式集合類型不需要在標(biāo)記中指定為對象元素,并且 XAML 內(nèi)容屬性不需要指定為屬性元素。 因此,標(biāo)記中的明顯內(nèi)容模型現(xiàn)在可以將多個子元素分配為內(nèi)容。

<Window x:Class="_010_WPF_Demo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:_010_WPF_Demo"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="900">
    <Grid >
        <StackPanel Width="100" Height="200">
            <Button>Button 1</Button>
            <Button>Button 2</Button>
            <Button>Button 3</Button>
        </StackPanel>

    </Grid>
</Window>

十一、總結(jié)

XAML語法規(guī)范大致有以上幾種常用的方式,在實際應(yīng)用中會根據(jù)不同的場景,選擇恰當(dāng)?shù)姆绞浇M合完成應(yīng)用程序的開發(fā)。文章來源地址http://www.zghlxwxcb.cn/news/detail-744598.html

到了這里,關(guān)于【W(wǎng)PF系列】- XAML語法規(guī)范的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【.NET深呼吸】將XAML放到WPF程序之外

    【.NET深呼吸】將XAML放到WPF程序之外

    上一篇水文中,老周說了一下純代碼編寫 WPF 的大概過程。不過,還是不夠的,本篇水文中咱們還要更進(jìn)一步。 XAML 文件默認(rèn)是作為資源打包進(jìn)程序中的,而純代碼編寫又導(dǎo)致一些常改動的東西變成硬編碼了。為了取得二者平衡,咱們還要把一些經(jīng)常修改的東西放到 XAML 文件

    2024年02月09日
    瀏覽(27)
  • WPF .Net6框架下, 使用 Microsoft.Xaml.Behaviors.Wpf 的Interaction.Triggers特性,實現(xiàn)ComboBox 在展開時,觸發(fā)刷新列表內(nèi)容的動作

    ComboBox 在WPF中是常見的控件。 一般情況下,在綁定好數(shù)據(jù)源后,其內(nèi)容是固定的。 當(dāng)然,你也可以實時刷新,但這將帶來較高的資源消耗。 因此有個折中的辦法: 只在它在展開時,自動更新列表內(nèi)容。 當(dāng)前文章基于 .Net6框架,其他框架不適用。 這個是用于平替winform某個組

    2024年02月09日
    瀏覽(23)
  • WPF XAML(一)

    WPF XAML(一)

    問:XAML的含義是什么?為什么WPF中會使用XAML?而不是別的? 答:在XAML是基于XML的格式,XML的優(yōu)點(diǎn)在于設(shè)計目標(biāo)是具有邏輯性易讀而且簡單內(nèi)容也沒有被壓縮。? 其中需要提一下XAML文件在 Visual Studio (VS) 編譯時,是會被轉(zhuǎn)換為BAML。BAML最終會以資源的形式嵌入到DLL或者EXE程序

    2024年02月02日
    瀏覽(21)
  • 【wpf】xaml 中的參數(shù)復(fù)用

    【wpf】xaml 中的參數(shù)復(fù)用

    xaml中有幾種復(fù)用的方式: 有時在xaml中,我們需要復(fù)用一些參數(shù),比如 固定的一個值。 有時是固定的一個樣式。 有時多個控件都要設(shè)置一個高度,我可以引入sys 我就使用這個吧: xmlns:sys=\\\"clr-namespace:System;assembly=mscorlib\\\" 用的更多的其實是margin,我們試一試: 這里 mm 用的是

    2024年02月07日
    瀏覽(25)
  • WPF XAML中使用依賴屬性

    自定義的控件 MyCustomControl ,它有一個依賴屬性 MyProperty 。首先,我們需要在控件的代碼文件中創(chuàng)建這個依賴屬性: 在XAML文件中使用這個控件及其依賴屬性: 在這個例子中, local 是XAML文件中定義的XML命名空間前綴, clr-namespace:WpfApp 指定了 MyCustomControl 定義所在的命名空間。

    2024年02月20日
    瀏覽(30)
  • dotnet 簡單方法在一個進(jìn)程內(nèi)同時跑起 WPF 和 ASP.NET Core 框架

    dotnet 簡單方法在一個進(jìn)程內(nèi)同時跑起 WPF 和 ASP.NET Core 框架

    從設(shè)計架構(gòu)上,無論是 WPF 還是 ASP.NET Core 框架,都是在 dotnet 運(yùn)行時上層的應(yīng)用,兩個框架處于平級的結(jié)構(gòu)。理論上講,兩個平級的框架只要不存在特殊的情況,都是能夠相容存在的。本文將和大家介紹一個非常簡單的方法,在一個進(jìn)程內(nèi)同時跑起 WPF 和 ASP.NET Core 框架 在一

    2024年04月26日
    瀏覽(30)
  • Microsoft.Xaml.Behaviors.Wpf 的使用

    System.Windows.Interactivity.WPF這個已經(jīng)過時,可以使用?Microsoft.Xaml.Behaviors.Wpf ,基本使用查不多,

    2024年02月13日
    瀏覽(24)
  • WPF國際化的實現(xiàn)方法(WpfExtensions.Xaml)

    WPF國際化的實現(xiàn)方法(WpfExtensions.Xaml)

    https://blog.csdn.net/eyupaopao/article/details/120090431 resx資源文件實現(xiàn) resx資源文件,實現(xiàn)的過程比第一種復(fù)雜,但resx文件本身編輯比較簡單,維護(hù)起來比較方便。需要用到的框架:WpfExtensions.Xaml 為每種語言添加.resx資源文件,放在I18nResource文件夾下 I18nResource.resx 代表英語,名字不要

    2024年02月12日
    瀏覽(30)
  • WPF繪圖指南:用XAML輕松實現(xiàn)圓、線、矩形、文字、圖片創(chuàng)意元素

    WPF繪圖指南:用XAML輕松實現(xiàn)圓、線、矩形、文字、圖片創(chuàng)意元素

    ? 概述: 在WPF中,通過使用不同的元素如Ellipse、Line、Rectangle等,可以輕松繪制各種圖形,包括圓、線條、橢圓、矩形、多邊形等。同時,通過TextBlock展示文字,Image展示圖片,以及Path創(chuàng)建路徑和曲線,使得圖形的繪制變得靈活多樣。通過簡單的XAML代碼,開發(fā)者可以快速構(gòu)建

    2024年03月13日
    瀏覽(25)
  • WPF實現(xiàn)更加靈活綁定復(fù)雜Command(使用Microsoft XAML Behaviors 庫)

    WPF實現(xiàn)更加靈活綁定復(fù)雜Command(使用Microsoft XAML Behaviors 庫)

    1、安裝NuGet ???????? 2、在XAML的命名空間引入: 3、使用(這里是設(shè)置了一個Canvas的點(diǎn)擊事件,其它面板也是類似這樣設(shè)置): ? ? ? ? --我這里的ViewModel部分是這樣子的 4、這樣就可以在ViewModel中直接給這個Command內(nèi)容了,不用像之前那么麻煩地綁定Command了,這樣更加清晰,

    2024年02月04日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包