[译]WPF开源控件扩展库ControlzEx
原文鏈接:https://github.com/ControlzEx/ControlzEx
翻譯:沙漠盡頭的狼(谷歌及百度提供翻譯支持)
Shared Controlz for WPF
支持 .NET Framework(4.5.2、4.6.2 及更高版本)、.NET Core (3.1) 和 .NET 5(在 Windows 上)
Let's get started
版本和版本說明[1]
構(gòu)建[2]ControlzEx 解決方案
TextBoxInputMaskBehavior
TextBoxInputMaskBehavior可用于顯示文本框內(nèi)的掩碼。
注意:它只是一個掩碼,不會驗證您的文本。
<TextBlock Grid.Row="0"Grid.Column="0"Margin="4"Text="Datetime" /> <TextBox Grid.Row="0"Grid.Column="1"Margin="4"><behaviors:Interaction.Behaviors><controlzEx:TextBoxInputMaskBehavior InputMask="00/00/0000" /></behaviors:Interaction.Behaviors> </TextBox><TextBlock Grid.Row="1"Grid.Column="0"Margin="4"Text="Phone Number" /> <TextBox Grid.Row="1"Grid.Column="1"Margin="4"><behaviors:Interaction.Behaviors><controlzEx:TextBoxInputMaskBehavior InputMask="( 999 ) 000 000 - 00"PromptChar="_" /></behaviors:Interaction.Behaviors> </TextBox>原始 TextBoxInputMaskBehavior 取自 Blindmeis 的博客。
https://blindmeis.wordpress.com/2015/01/20/wpf-textbox-input-behavior/
https://blindmeis.wordpress.com/2010/06/01/wpf-masked-textbox-behavior/
KeyboardNavigationEx
KeyboardNavigationEx是一個常見聚焦問題的輔助類。UI 元素本身的焦點不是問題。但是如果我們使用常見的對焦方法,控件獲得了焦點,但沒有獲得焦點視覺樣式。
僅當控件從鍵盤設備獲得焦點或 SystemParameters.KeyboardCues 為 true 時,原KeyboardNavigation類才處理視覺樣式。
使用KeyboardNavigationEx您可以通過兩種簡單的方式解決此問題。
后臺代碼:
public?partial?class?MainWindow?:?Window {public?MainWindow(){InitializeComponent();this.Loaded?+=?(s,?e)?=>?{?KeyboardNavigationEx.Focus(this.TheElementWhichShouldGetTheFocus);?};} }或在 XAML 中:
<Button controlzex:KeyboardNavigationEx.AlwaysShowFocusVisual="True">Hey, I get the focus visual style on mouse click!</Button>自動移動ToolTip
一個自動移動的ToolTip。更多信息[3]。
<Button Margin="5"Padding="5"Content="Test Button 2"ToolTipService.ShowDuration="20000"><Button.ToolTip><ToolTip local:ToolTipAssist.AutoMove="True"><ToolTip.Template><ControlTemplate><Grid><Border Background="Gray"BorderBrush="Black"BorderThickness="1"Opacity="0.9"SnapsToDevicePixels="True" /><TextBlock Margin="5"Foreground="WhiteSmoke"FontSize="22"Text="ToolTipHelper AutoMove sample"TextOptions.TextFormattingMode="Display"TextOptions.TextRenderingMode="ClearType" /></Grid></ControlTemplate></ToolTip.Template></ToolTip></Button.ToolTip> </Button>GlowWindowBehavior
GlowWindowBehavior在窗口周圍添加一個光暈。
WindowChromeBehavior
ControlzEx 為 WPF 窗口提供了自定義鑲邊,并為其提供了一些其他更深層次的修復。
大多數(shù)修復和改進來自MahApps.Metro[4]和Fluent.Ribbon[5]。
具體的技術(shù)實現(xiàn)描述在這:
http://blogs.msdn.com/b/wpfsdk/archive/2008/09/08/custom-window-chrome-in-wpf.aspx
它是原始 Microsoft WPF Shell 集成庫的一個分支。目前的 Microsoft 實現(xiàn)在這里找到:
https://github.com/dotnet/wpf
http://referencesource.microsoft.com
PopupEx
自定義的Popup窗口,可用于驗證錯誤模板或其他類似MaterialDesignInXamlToolkit[6]或MahApps.Metro[7]中的其他內(nèi)容。
PopupEx 提供了一些額外的不錯的功能:
如果主機窗口大小或位置發(fā)生變化,則重新定位
如果主機窗口最大化,則重新定位,反之亦然
如果主機窗口被激活,它只能是最頂層
TabControlEx
自定義TabControl,在取消選擇時將TabItem內(nèi)容保留在VisualTree中,因此在再次選擇TabItem后不會重新創(chuàng)建。visibility行為可以通過ChildContentVisibility依賴屬性設置。
用法:
<controlz:TabControlEx><TabItem Header="Lorem"><TextBlock Text="Lorem ipsum dolor sit amet, consetetur sadipscing"HorizontalAlignment="Center"FontSize="30" /></TabItem><TabItem Header="ipsum"><TextBox Text="Lorem ipsum dolor sit amet, consetetur sadipscing"HorizontalAlignment="Center"Margin="5" /></TabItem> </controlz:TabControlEx>PackIconBase
一個用于在 WPF 中創(chuàng)建圖標包的幫助類。
要創(chuàng)建新的圖標包,請按照下列步驟操作:
定義一個鍵(通常是一個枚舉):
public?enum?PackIconKind {Happy,Sad }子類PackIconBase,添加
默認style key
為每個key提供Path數(shù)據(jù)的工廠
提供默認樣式(通常在您的 Generic.xaml 中,例如:
<Style TargetType="{x:Type local:PackIcon}"><Setter Property="Height" Value="16" /><Setter Property="Width" Value="16" /><Setter Property="HorizontalAlignment" Value="Left" /><Setter Property="VerticalAlignment" Value="Top" /><Setter Property="IsTabStop" Value="False" /><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type local:PackIcon}"><Viewbox><Canvas Width="24" Height="24"><Path Data="{Binding Data, RelativeSource={RelativeSource TemplatedParent}}"Fill="{TemplateBinding Foreground}" /></Canvas></Viewbox></ControlTemplate></Setter.Value></Setter> </Style>您的用戶現(xiàn)在應該可以通過一種簡單的方式在他們的應用程序中使用您的圖標包:
<ns:PackIcon Kind="HappyIcon" />Theming
ControlzEx 提供ThemeManager幫助您為應用程序提供主題管理支持。有關(guān)更多信息,請參閱該節(jié)[8]。
Licence
MIT
參考資料
[1]
版本和版本說明: https://github.com/ControlzEx/ControlzEx/releases
[2]構(gòu)建: https://github.com/ControlzEx/ControlzEx/wiki/Home
[3]信息: https://jkarger.de/2014/11/02/how-to-make-the-tooltip-follow-the-mouse/
[4]MahApps.Metro: https://github.com/MahApps/MahApps.Metro
[5]Fluent.Ribbon: https://github.com/fluentribbon/Fluent.Ribbon
[6]MaterialDesignInXamlToolkit: https://github.com/ButchersBoy/MaterialDesignInXamlToolkit
[7]MahApps.Metro: https://github.com/MahApps/MahApps.Metro
[8]該節(jié): https://github.com/ControlzEx/ControlzEx/blob/develop/Wiki/ThemeManager.md
總結(jié)
以上是生活随笔為你收集整理的[译]WPF开源控件扩展库ControlzEx的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 又一次Task.Wait引起的教训
- 下一篇: .Net Core with 微服务 -