翻譯|使用教程|編輯:龔雪|2021-11-09 10:11:25.217|閱讀 209 次
概述:本文主要為大家介紹如何調整WPF應用程序的類型樣式,歡迎下載最新版體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
從v.17.2開始,DevExpress WPF套件提供了DevExpress.Xpf.TypedStyles程序集,其中包含以下控件的類型樣式:
下圖演示了常規樣式和類型樣式之間的區別。
要為多個按鈕設置常規樣式,您應該實現一個帶有TargetType=Button的 Style,并在單獨的Setter中指定每個屬性。
類型樣式允許您通過以下方式為所有按鈕定義樣式:
示例:ButtonStyle用于標準Button控件,GridControlStyle用于DevExpress GridControl。
類型樣式支持所有常規樣式功能。
附加屬性
附加屬性收集在 MergedStyles 屬性中:
XAML
<BorderStyle x:Key="styleWithAttachedProperties"> <KeyboardNavigationStyle IsTabStop="False" /> <FocusManagerStyle IsFocusScope="False" /> <TextBlockStyle FontSize="13" FontWeight="Bold"/> </BorderStyle>
事件
您可以在沒有EventSetter的情況下指定事件處理程序:
XAML
<BorderStyle x:Key="styleWithEvents" Loaded="BorderStyle_Loaded"/>
標記擴展
立即返回其值的標記擴展(除了 BindingBase 和 DynamicResoureExtension)可以以常規方式在類型樣式中使用:
XAML
<SolidColorBrush x:Key="greenBrush">Green</SolidColorBrush> <ButtonStyle x:Key="styleWithMarkupExtensions" BorderBrush="{StaticResource greenBrush}" Foreground="{x:Null}" />
使用 BindingBase 和 DynamicResourceExtension 標記擴展的“*_Source”屬性:
XAML
<ButtonStyle x:Key="styleWithExpressionExtensions" Content_Source="{Binding FirstName}" Tag_Source="{DynamicResource tag}" />
DevExpress 擴展(DXBinding/DXEvent/DXCommand)
/與類型樣式無縫協作。
XAML
<ButtonStyle x:Key="styleWithDXBinding" Content_Source="{DXBinding 'FirstName + @Self.Tag + $Button.TemplateProperty.Name'}" Tag="tag" Command_Source="{DXCommand 'Click()'}"/>
注意: 不適用于類型化樣式。
基本樣式
您可以通過以下方式定義基本樣式:
XAML
<ButtonBaseStyle x:Key="baseStyle" Background="Red" /> <ButtonStyle x:Key="styleWithBaseStyle" BasedOn="{StaticResource baseStyle}" ClickMode="Hover"/>
Setters
您可以通過填充 *Style.Setters 集合來使用常規 setter。
XAML
<ButtonStyle x:Key="styleWithStandardSetters"> <ButtonStyle.Setters> <Setter Property="DockPanel.Dock" Value="Bottom" /> </ButtonStyle.Setters> </ButtonStyle>
隱式樣式
要定義隱式樣式,請使用x:Key替代TargetType:
XAML
<ToggleButtonStyle x:Key="{x:Type ToggleButton}" Width="153" />
目標類型在內部設置為 typed 樣式,因此您不應手動設置它。 例如,要為ListBox 定義VirtualizingPanelStyle,您需要先定義ListBoxStyle。
XAML
<ListBoxStyle x:Key="virtualizingStyle"> <VirtualizingPanelStyle IsVirtualizing="True" /> </ListBoxStyle>
觸發器
除了類型化樣式之外,DevExpress.Xpf.TypedStyles 程序集還包含每個受支持控件的類型化觸發器:
XAML
<ButtonStyle x:Key="styleWithTriggers" Margin="1,2,3,4"> <ButtonStyle.Triggers> <ButtonTrigger Visibility="Hidden" IsMouseOver="True"> <TextBlockStyle FontSize="13" /> </ButtonTrigger> </ButtonStyle.Triggers> </ButtonStyle>
您可以在模板中使用類型化觸發器。 為此,請指定類型化觸發器的 SourceName 或 TemplateName 屬性:
XAML
<ControlTemplate x:Key="templateWithTriggers" TargetType="Button"> <TextBlock x:Name="textBlock" /> <ControlTemplate.Triggers> <TextBlockTrigger FontWeight="Black" SourceName="textBlock"> <TextBlockStyle TargetName="textBlock" FontStyle="Oblique"/> </TextBlockTrigger> </ControlTemplate.Triggers> </ControlTemplate>
如果為多個源對象創建觸發器,則可以定義多個觸發器:
XAML
<ControlTemplate x:Key="templateWithDifferentSourceNamesTriggers" TargetType="Button"> <StackPanel> <TextBlock x:Name="textBlock1" /> <TextBlock x:Name="textBlock2" /> </StackPanel> <ControlTemplate.Triggers> <ButtonTrigger> <ButtonTrigger.Triggers> <MultiTriggerCollection> <TextBlockTrigger IsMouseOver="True" SourceName="textBlock1"/> <TextBlockTrigger IsKeyboardFocusWithin="True" SourceName="textBlock2"/> </MultiTriggerCollection> </ButtonTrigger.Triggers> <TextBlockStyle FontWeight="Bold"/> </ButtonTrigger> </ControlTemplate.Triggers> </ControlTemplate>
數據觸發器
使用 TypedDataTrigger 將類型樣式與數據觸發器一起使用。
XAML
<ButtonStyle x:Key="styleWithDataTriggers" Margin="1,2,3,4"> <ButtonStyle.Triggers> <TypedDataTrigger Binding="{Binding FirstName}" Value="Jon"> <TextBlockStyle FontSize="13" /> </TypedDataTrigger> </ButtonStyle.Triggers> </ButtonStyle>
引用和命名空間
所有類型化的樣式和觸發器都在 {Corresponding control namespace}.TypedStyles 命名空間中實現。
示例:ButtonStyle - System.Windows.Controls.TypedStyles.
類型化樣式的 XAML 命名空間與相應控件的命名空間相同——您不需要添加任何額外的命名空間引用。 要使用類型化樣式,請在您的項目中引用 DevExpress.Xpf.TypedStyles 程序集。
限制
性能
類型樣式的性能與常規樣式相當,以下常規樣式在測試機上應用 200 毫秒:
XAML
<Style x:Key="style00" TargetType="Button"> <Setter Property="FontFamily" Value="CourierNew"/> <Setter Property="FontSize" Value="12"/> <Setter Property="FocusVisualStyle" Value="{x:Null}"/> <Setter Property="Focusable" Value="False"/> <Setter Property="Content" Value="test"/> <Setter Property="Background" Value="Red"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="Margin" Value="1,2,3,4"/> <Setter Property="Cursor" Value="Hand"/> </Style>
以下通過類型樣式實現的模擬在測試機上應用了 130 毫秒:
XAML
<ButtonStyle x:Key="style00" FontFamily="CourierNew" FontSize="12" FocusVisualStyle="{x:Null}" Focusable="False" Content="test" Background="Red" BorderThickness="1" Margin="1,2,3,4" Cursor="Hand" />
DevExpress WPF擁有120+個控件和庫,將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序,這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件的衍伸產品,還是以數據為中心的商業智能產品,都能通過DevExpress WPF控件來實現。
DevExpress技術交流群5:742234706 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網