在專案中,需要為所有的Button、TextBox設定一個默認的全域樣式,一個個的為多個控制元件設定相同的樣式顯然是不明智的,在WPF中可以通過資源設定全域樣式,主要有倆種方法:
1.第一種就是先寫好按鈕的樣式,不寫Key,然后在App.xaml中參考,
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Style TargetType="{x:Type CheckBox}" /> </ResourceDictionary>
<!-- 默認Button樣式 --> <ResourceDictionary Source="pack://application:,,,/Resources/ButtonStyle/BasicButton.xaml" /> <!-- 默認TextBox樣式 --> <ResourceDictionary Source="pack://application:,,,/Resources/TextBoxStyleBasic/TextBoxStyleBasic.xaml" /> <!-- 默認CheckBox樣式 --> <ResourceDictionary Source="pack://application:,,,/Resources/ButtonStyle/BasicCheckbox.xaml" /> <!-- 默認滾動條樣式 -->
<ResourceDictionary Source="pack://application:,,,/Resources/ControlStyle/ScrollViewBasic.xaml" />
這種方式有多少個控制元件就需要在APP中累砌多少個參考,會使組態檔雜亂冗余,而且由于默認樣式沒有Key,控制不夠靈活,所以再介紹下第二種方法,
2.
為控制元件寫的樣式和上文差不多,只是加上Key,(沒有Key為全域樣式,有Key則需要進行鍵值參考)
<Style x:Key="DefaultCheckBox" TargetType="{x:Type CheckBox}" />
新建一個資源,統一管理所有的控制元件樣式資源,通過BaseOn繼承帶Key的樣式,轉換為默認全域樣式,然后只需要在App中參考這一個資源檔案即可,這樣即使需要寫幾十上百個樣式,APP中也只需要一行代碼,
<ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/Resources/ButtonStyle/BasicButton.xaml" /> <ResourceDictionary Source="pack://application:,,,/Resources/ButtonStyle/BasicCheckbox.xaml" /> <ResourceDictionary Source="pack://application:,,,/Resources/ControlStyle/ScrollViewBasic.xaml" /> <ResourceDictionary Source="pack://application:,,,/Resources/TextBoxStyleBasic/TextBoxStyleBasic.xaml" /> </ResourceDictionary.MergedDictionaries> <Style BasedOn="{StaticResource DefaultButton}" TargetType="Button" /> <Style BasedOn="{StaticResource DefaultCheckBox}" TargetType="CheckBox" /> <Style BasedOn="{StaticResource DefaultScrollViewer}" TargetType="ScrollViewer" /> <Style BasedOn="{StaticResource DefaultTextBox}" TargetType="TextBox" /> </ResourceDictionary>
App中:
<ResourceDictionary Source="pack://application:,,,/Resources/OverwrideDefaultControlStyles.xaml" />
總結:如果只需要設定一倆個控制元件的全域樣式,第一個即可,設定多個控制元件樣式的話,還是建議第二種,另外:在APP.xaml中,相同控制元件的樣式,在最下面的參考優先級更高,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/22569.html
標籤:WPF
