WPF中的Style多檔案解決方案(XAML篇)

來源:互聯網
上載者:User
WPF中的Style多檔案解決方案(XAML篇)http://chr1syu.spaces.live.com/Blog/cns!6A09CB72C98E0121!195.entryWPF中的Style簡單筆記(XAML篇)
  • 建立資源
    1. 在Solution Explorer中直接為Project可以Add一個叫做Resource Dictionary的Item。這個Item會為你的Project加入一個以標籤<ResourceDictionary>為Root的XAML檔案。
    2. 在上述檔案中通過使用Style、SolidColorBrush等等可以定義各種資源。
      如:<SolidColorBrush x:Key="NormalBrush" Color="#FCF3D6" />
      這樣就定義了一個Key為NormalBrush的筆刷資源了。
    3. 如果要定義Style,就稍微麻煩些。Style可以為其附上Key也可以不附。但如果沒有Key則一般有TargetType來說明是針對特定Type的預設Style。例子如下:
      <Style x:Key="ButtonFocusVisual">
          <Setter Property="Control.Template">
              <Setter.Value>
                  <ControlTemplate>
                      <Border>
                          <Rectangle Margin="2" StrokeThickness="1"
                              Stroke="Orange" StrokeDashArray="1 2" />
                      </Border>
                  </ControlTemplate>
              </Setter.Value>
          </Setter>
      </Style>
    4. 對於Style來說還可以定義其Trigger來讓控制項根據一些屬性的變化而變化外表,例子如下:
      <Style TargetType="Button">
          <Setter Property="SnapsToDevicePixels" Value="true"/>
          <Setter Property="OverridesDefaultStyle" Value="true"/>
          <Setter Property="FocusVisualStyle"
                 Value="{StaticResource ButtonFocusVisual}"/>
          <Setter Property="Template">
              <Setter.Value>
                  <ControlTemplate TargetType="Button">
                      <Border 
                            x:Name="Border"  CornerRadius="2"
                           BorderThickness="1"
                           Background="{StaticResource NormalBrush}"
                           BorderBrush="{StaticResource NormalBorderBrush}">
                          <ContentPresenter
                                Margin="2"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                RecognizesAccessKey="True"/>
                      </Border>
                      <ControlTemplate.Triggers>
                          <Trigger Property="IsKeyboardFocused" Value="true">
                              <Setter TargetName="Border"
                                 Property="BorderBrush"
                                 Value="{StaticResource DefaultedBorderBrush}" />
                          </Trigger>

                                   ............

                      </ControlTemplate.Triggers>
                  </ControlTemplate>
              </Setter.Value>
          </Setter>
      </Style>

  • 應用資源
    1. 首先需要將上述資源加入到App中去。開啟App.xaml檔案,然後在標籤<Application.Resources>中添加入前面定義好的xaml檔案。如:
      <Application.Resources>
          <ResourceDictionary>
              <ResourceDictionary.MergedDictionaries>
                  <ResourceDictionary Source="resCommon.xaml" />
                  .........
              </ResourceDictionary.MergedDictionaries>
          </ResourceDictionary>
      </Application.Resources>
    2. 然後就可以在任何一個XAML或者C#的Code中調用了,那些沒有名字只有TargetType的將會被設定為相應Type的預設Style。應用方法如下:
      Style="{StaticResource ResourceKeyName}"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.