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使用すると、これを2つの簡単な方法で修正できます。
背後のコード:
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 )IsNCActiveプロパティを提供しますCornerPreferenceを介して)NonClientControlProperties.HitTestResultやNonClientControlProperties.ClickStrategyなどの添付プロパティを介して)修正と改善のほとんどは、mahapps.metroとfluent.ribbonからのものです。
ここで説明する技術の具体的な実装:
カスタムウィンドウChromeのMicrosoftからのブログエントリ
これは、元のMicrosoft WPF Shell Integration Libraryのフォークです。現在のMicrosoftの実装が見つかります:
検証エラーテンプレートなどで使用できるカスタムPopupなど、MaterialDesignincamltoolkitまたはmahapps.metroのようなもの。
PopupExいくつかの追加の素晴らしい機能を提供します:
TabItem再度選択した後、再作成している間に、VisualTreeにTabItemコンテンツをVisualTreeに保持するカスタムタブTabControlは、再作成されません。視認性の動作は、 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、例:
< 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)
著作権(c)2015年以来、Jan Karger、Bastian Schmidt、James Willock
このソフトウェアと関連するドキュメントファイル(「ソフトウェア」)のコピーを入手して、制限なしにソフトウェアを扱うために、このソフトウェアを制限する権利を含め、ソフトウェアのコピーをコピー、変更、公開、配布、販売する、ソフトウェアのコピーを許可する人を許可する人を許可することを含めて、許可が無料で許可されます。
上記の著作権通知とこの許可通知は、ソフトウェアのすべてのコピーまたはかなりの部分に含まれるものとします。
このソフトウェアは、商品性、特定の目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示的または黙示的なものを保証することなく、「現状のまま」提供されます。いかなる場合でも、著者または著作権所有者は、契約、不法行為、またはその他の訴訟、ソフトウェアまたはソフトウェアの使用またはその他の取引に関連する、またはその他の契約、またはその他の請求、またはその他の責任について責任を負いません。