การควบคุมที่ใช้ร่วมกันสำหรับ WPF
สนับสนุน. NET Framework (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 และการแก้ไขที่ลึกกว่าอื่น ๆ
สิ่งที่ให้ไว้:
WindowStyle ( None , SingleBorderWindow , ThreeDBorderWindow และ ToolWindow )IsNCActiveCornerPreference )NonClientControlProperties.HitTestResult และ NonClientControlProperties.ClickStrategy )การแก้ไขและการปรับปรุงส่วนใหญ่มาจาก mahapps.metro และ fluent.ribbon
การใช้เทคนิคที่เป็นรูปธรรมที่อธิบายไว้ที่นี่:
รายการบล็อกจาก Microsoft บน Custom Window Chrome
มันเป็นส้อมของไลบรารีการรวม Microsoft WPF Shell ดั้งเดิม การใช้งานของ Microsoft ในปัจจุบันสามารถพบได้:
Popup แบบกำหนดเองที่สามารถใช้ในเทมเพลตข้อผิดพลาดการตรวจสอบความถูกต้องหรืออย่างอื่นเช่นใน Materialdesigninxamltoolkit หรือ mahapps.metro
PopupEx มีคุณสมบัติที่ดีเพิ่มเติม:
TabControl ที่กำหนดเองที่เก็บเนื้อหา TabItem ใน VisualTree ในขณะที่ไม่เลือกพวกเขาดังนั้นจึงไม่มีการสร้างฝันร้ายอีกครั้งหลังจากเลือก 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
} subclass 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 ของคุณเช่น:
< 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
ได้รับอนุญาตโดยไม่ต้องเสียค่าใช้จ่ายสำหรับบุคคลใด ๆ ที่ได้รับสำเนาซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") เพื่อจัดการในซอฟต์แวร์โดยไม่มีการ จำกัด รวมถึง แต่ไม่ จำกัด เฉพาะสิทธิ์ในการใช้สำเนาดัดแปลงผสานเผยแพร่เผยแพร่
ประกาศลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์มีให้ "ตามสภาพ" โดยไม่มีการรับประกันใด ๆ ไม่ว่าโดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เฉพาะการรับประกันความสามารถในการค้าการออกกำลังกายสำหรับวัตถุประสงค์เฉพาะและการไม่เข้าร่วม ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดชอบต่อการเรียกร้องความเสียหายหรือความรับผิดอื่น ๆ ไม่ว่าจะเป็นการกระทำของสัญญาการละเมิดหรืออื่น ๆ ที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือการติดต่ออื่น ๆ ในซอฟต์แวร์