WPF를위한 공유 ControlZ
.NET 프레임 워크 (4.5.2, 4.6.2 이상), .NET Core (3.1) 및 .NET 5 (Windows) 지원

TextBoxInputMaskBehavior 는 TextBox 안에 마스크를 표시하는 데 사용될 수 있습니다.
참고 : 마스크 일 뿐이며 텍스트를 검증하지 않습니다.
< 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의 블로그에서 가져 왔습니다.

KeyboardNavigationEx 는 일반적인 초점 문제를위한 도우미 클래스입니다. UI 요소 자체의 초점은 문제가되지 않습니다. 그러나 공통 포커싱 방법을 사용하면 컨트롤이 초점을 맞추지 만 초점 시각적 스타일을 얻지 못합니다.
원래 KeyboardNavigation 클래스는 컨트롤이 키보드 장치에서 초점을 맞추거나 SystemParameters.keyboardCues가 참인 경우에만 시각적 스타일을 처리합니다.
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 >자동 이동 툴팁. 더 많은 정보.
< 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 는 창문 주위에 빛을 더합니다.
Windows 11부터 시작하여 동작을 사용하여 기본 창 경계의 색상을 제어 할 수 있으며 Windows 11이 감지 될 때 자동으로 그렇게합니다.
PreferDWMBorder false 로 설정하여 꺼질 수 있습니다.
ControlZex는 WPF Windows 용 사용자 지정 크롬과 다른 더 깊은 수정 사항을 제공합니다.
그것이 제공하는 것 :
WindowStyle 지원합니다 ( None , SingleBorderWindow , ThreeDBorderWindow 및 ToolWindow )IsNCActive 속성을 제공합니다CornerPreference 를 통해)NonClientControlProperties.HitTestResult 와 같은 첨부 된 속성을 통해 Hittestresult 및 NonClientControlProperties.ClickStrategy )대부분의 수정 및 개선은 Mahapps.metro and Fluent.Ribbon의 것입니다.
여기에 설명 된 기술의 구체적인 구현 :
Custom Window Chrome의 Microsoft의 블로그 항목
원래 Microsoft WPF Shell Integration Library의 포크입니다. 현재 Microsoft의 구현을 찾을 수 있습니다.
유효성 검사 오류 템플릿 또는 재료 디자인 닉사무 또는 MAHAPPS.METRO와 같은 다른 내용에 사용할 수있는 사용자 정의 Popup .
PopupEx 몇 가지 추가적인 기능을 제공합니다.
visualtree의 TabItem 컨텐츠를 선택하지 않은 상태에서 유지하는 사용자 정의 TabControl 이므로 TabItem 다시 선택한 후에는 악몽을 다시 만들지 않습니다. 가시성 동작은 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 >WPF에서 아이콘 팩을 만드는 일반적인 방법을 구동하는 기본 클래스.
새 아이콘 팩을 만들려면 다음 단계를 따르십시오.
키를 정의하십시오 (일반적으로 enum ) :
public enum PackIconKind
{
Happy ,
Sad
} 서브 클래스 PackIconBase , 추가
public class PackIcon : PackIconBase < PackIconKind >
{
static PackIcon ( )
{
DefaultStyleKeyProperty . OverrideMetadata ( typeof ( PackIcon ) , new FrameworkPropertyMetadata ( typeof ( PackIcon ) ) ) ;
}
public PackIcon ( ) : base ( CreateIconData )
{ }
private static IDictionary < PackIconKind , string > CreateIconData ( )
{
return new Dictionary < PackIconKind , string >
{
{ PackIconKind . Happy , "M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" } ,
{ PackIconKind . Sad , "M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14Z" }
} ;
}
}기본 스타일을 제공하십시오 (일반적으로 generic.xaml, eg :
< 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 >사용자는 이제 응용 프로그램에서 아이콘 팩을 사용하는 간단한 방법이 있어야합니다.
< ns : PackIcon Kind = " HappyIcon " /> ControlZex는 앱에 테마를 제공하는 데 도움이되는 ThemeManager 제공합니다.
자세한 내용은이 섹션을 참조하십시오.
MIT 라이센스 (MIT)
Copyright (C) 2015 년부터 Jan Karger, Bastian Schmidt, James Willock
이에 따라이 소프트웨어 및 관련 문서 파일 ( "소프트웨어")의 사본을 얻는 사람에게는 허가가 부여됩니다. 소프트웨어의 사용, 복사, 수정, 합병, 배포, 배포, 숭고 및/또는 소프트웨어의 사본을 판매 할 권한을 포함하여 제한없이 소프트웨어를 처리 할 수 있도록 소프트웨어를 제공 할 권한이 없습니다.
위의 저작권 통지 및이 권한 통지는 소프트웨어의 모든 사본 또는 실질적인 부분에 포함되어야합니다.
이 소프트웨어는 상업성, 특정 목적에 대한 적합성 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타, 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래에서 발생하는 계약, 불법 행위 또는 기타의 행동에 관계없이 청구, 손해 또는 기타 책임에 대해 책임을지지 않습니다.