Mgen Spa工程 2 教程(第14部分):自訂錯誤封裝控制項和組控制項樣式

來源:互聯網
上載者:User

返回教程目錄

目錄

  • 1. 自訂錯誤封裝控制項樣式
  • 2. 自訂群組控制項樣式

 

 

返回目錄

1. 自訂錯誤封裝控制項樣式

如,當一個控制項發生驗證錯誤後,控制項會被紅色的邊框包圍,然後下方有錯誤訊息。事實上,控制項在顯示後是包含在另一個Spa工程內部控制項中,它就是錯誤封裝控制項,該控制項和WPF中的HeaderedContentControl很像,名稱是SpaHeaderedContentControl,定義在Mgen.Spa.UI.Controls命名空間內。

 

下面是SpaHeaderedContentControl的類型視圖:

(注意上方紅線表明的地方,在WPF中SpaHeaderedContentControl是直接繼承自System.Windows.Controls.HeaderedContentControl的,但是在WP和WinRT環境下,系統沒有定義HeaderedContentControl,SpaHeaderedContentControl繼承自Spa工程內Mgen.Spa.UI.Controls.Core.HeaderedContentControl類型。)

 

這個類型很簡單,顯示的控制項本身和控制項上方的文字分別對應HeaderedContentControl的Content屬性和Header屬性。SpaHeaderedContentControl在其基礎上添加和錯誤資訊:Error屬性。其他屬性都是輔助屬性。

 

那麼使用者可以自訂一個針對SpaHeaderedContentControl的樣式來改變錯誤封裝控制項的樣式,在預設樣式下,錯誤文字的顏色等於邊框顏色。

 

那麼可以定義一個樣式把錯誤顏色改成藍色,然後只顯示左右兩側的邊框:

首先加入SpaHeaderedContentControl的命名空間:

xmlns:spacon="clr-namespace:Mgen.Spa.UI.Controls;assembly=Mgen.Spa.FX"

接著定義樣式:

<Style TargetType="spacon:SpaHeaderedContentControl">

    <Setter Property="BorderThickness" Value="4 0"/>

    <Setter Property="BorderBrush" Value="Navy"/>

</Style>

 

運行結果:

 

如果想設定上方文字的樣式,可以通過SpaHeaderedContentControl的HeaderTemplate屬性,如下Style定義:

<Style TargetType="spacon:SpaHeaderedContentControl">

    <Setter Property="HeaderTemplate">

        <Setter.Value>

            <DataTemplate>

                <Border Background="YellowGreen" Padding="5">

                    <TextBlock Text="{Binding}" Foreground="White" FontSize="18"/>

                </Border>

            </DataTemplate>

        </Setter.Value>

    </Setter>

</Style>

 

運行結果:

WPF下:

WinRT下:

WP下:

當然使用者最後也可以直接設定SpaHeaderedContentControl的Template屬性來為其定義一個全新的控制項範本。

 

 

返回目錄

2. 自訂群組控制項樣式

組控制項樣式對應Mgen.Spa.UI.Controls.SpaExpander控制項,同樣,在WPF中SpaExpander直接繼承自WPF的Expander類型,而在WinRT和WP中繼承自Spa工程定義的Expander類型。讀者可以參考WPF的Expander控制項的模板來自訂SpaExpander的控制項範本。如果只是想改一下基礎樣式,可以直接設定SpaExpander的HeaderStyle和HeaderErrorStyle。實際上這兩個Style會應用在Expander的Header內部的CheckBox控制項上。兩個樣式分別代表沒有驗證錯誤和有驗證錯誤的SpaExpander上。

 

樣本樣式:

<!-- spacon命名空間指向Mgen.Spa.UI.Controls -->

<Style TargetType="spacon:SpaExpander">

    <Setter Property="HeaderStyle">

        <Setter.Value>

            <Style TargetType="Control">

                <Setter Property="Background" Value="Gray"/>

                <Setter Property="BorderThickness" Value="3"/>

                <Setter Property="BorderBrush" Value="Black"/>

            </Style>

        </Setter.Value>

    </Setter>

    <Setter Property="HeaderErrorStyle">

        <Setter.Value>

            <Style TargetType="Control">

                <Setter Property="Foreground" Value="Red"/>

                <Setter Property="Background" Value="Transparent"/>

                <Setter Property="BorderThickness" Value="3"/>

                <Setter Property="FontSize" Value="29"/>

                <Setter Property="BorderBrush" Value="Pink"/>

            </Style>

        </Setter.Value>

    </Setter>

</Style>

 

運行結果,當組沒有錯誤時:

有驗證錯誤時:

 

WinRT下:

WP下:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.