WPFにもNumericUpDownみたいなのをユーザーコントロールで、その1
目的は

わざわざ作らなくても、探せばあるんだろうけど作りたいから作る
今回の記事では、見た目だけ作るまでの手順

ここまで
新しいプロジェクトの作成

選択するテンプレートは、WPF User Control Library (.NET Core)

名前はControlLibraryCore20200620にした
これがdllファイルの名前になる
デザイン画面

GridにTextBoxを1つと、RepeatButtonを2つ配置
RepeatButtonに表示する▲と▼はPolygonで表現、これの大きさはRepeatButtonに合わせたいので、RepeatButtonのContentにViewboxを置いて、その中にPolygonを入れた
動作確認用のプロジェクトを追加

メニューのファイル→追加→新しいプロジェクト
または、ソリューションエクスプローラーのソリューションの右クリックメニューから、追加→新しいプロジェクト

選択するテンプレートはアプリ作成用のWPF App(.NET Core)

名前はUserControlDll動作確認用にした

追加したところ、ソリューションエクスプローラーでも確認できる
対応プラットフォームをAny CPUからx64に変更する
今では64bit用のアプリしか作らないからx64に変更したけど、必要ないかも
2023年1月18日追記ここから
プラットフォームの変更は必要ないどころか、AnyCPUのままの方がいい
3年後にめんどくさいことになった
gogowaten.hatenablog.com
2023年1月18日追記ここまで
メニューのビルド→構成マネージャーなどから開いて

このAny CPUってあるのを全部x64に変更

2つのプロジェクトのプラットフォームを変更

アクティブソリューションプラットフォームも変更

全部変更したところ
あとはUserControlをビルドして、できたDLLファイルを動作確認用のプロジェクトの参照に追加すれば動作確認できる
UserControlのビルド

ビルド
できたDLLファイルのパスをコピー

出力ウィンドウにパスが表示されるのでコピーして
動作確認用のプロジェクトの参照に追加

ソリューションエクスプローラーで、動作確認用のプロジェクトの「依存関係」を右クリック
このへんの表記が.NET Frameworkと違うねえ

右クリックメニューの「COM 参照の追加」を選択
ここも.NET Frameworkと微妙に表記が違うけど、ここからの操作は同じ
参照マネージャー

参照ボタン押して

さっきコピーしたパスを貼り付けて

チェックが入った状態で追加されるので、そのままOK

追加された。ソリューションエクスプローラーで確認できる
でもエラーっぽい「!」マークが付いているんだよねえ、気になったけど普通に動いていたし、Visual Studioを再起動したか、ソリューションを開き直したら「!」マークは消えて、それ以降は出ていない。よくわからん
動作確認用のデザイン画面にユーザーコントロールを追加
その前にXAMLにも参照の追加

今回は7行目に追加した
xmlns:myControl="clr-namespace:まで打つと、入力候補が出てくる

xmlns:myControl="clr-namespace:ControlLibraryCore20200620;assembly=ControlLibraryCore20200620"
myControlのところは変数名みたいなもの?なので、わかりやすい名前がいい
ユーザーコントロールを追加

<myControl: まで打つと入力候補が出てくるようになっている
追加直後は表示されない

参照に追加直後だと表示されないけど

ビルドしたら表示された
これ以降は他のコントロールと同じように、追加するだけで表示されるようになった

Gridに載せただけだと、いっぱいに広がるのでStackPanelに入れて、これでヨシ!
動作確認のデバッグ開始!
無慈悲なエラー

スタートアッププロジェクトの設定を忘れていた
スタートアッププロジェクトの設定

ソリューションエクスプローラーで、動作確認用のプロジェクト名を右クリック、メニューから「スタートアッププロジェクトに設定」を選択
できた

動いた(表示された)
「!」マーク

最初のこのときは、ソリューションエクスプローラーのほうで「!」マークが付いたままだったけど

別のソリューションを開いたあとに、開き直したら消えてた
今なら探せばWPF用のNumericUpDownはどこかで公開されているんだろうけど、以前は見つけられなくて自分で作って、でもそれがイマイチで使ってなかった。代わりにTextboxとScrollBarの組み合わせでお茶お濁していたけど、.NET Frameworkから.NET Coreに変更したし、今なら前よりもいいのが作れそう(なんで?)ってことになった。
次は前回の記事のTextBoxの入力制限を、今回のに組み合わせればいいかな
関連記事
次回は翌日
gogowaten.hatenablog.com
前回のWPF記事は昨日
gogowaten.hatenablog.com
以前.NET Frameworkで作ったときの記事は2年前
gogowaten.hatenablog.com
そんな昔だっけ?
TextBoxとScrollBarの組み合わせは2年半前
gogowaten.hatenablog.com
WPFにもNumericUpDown履歴
使っているアプリ
gogowaten.hatenablog.com