Application.StartupUri

もちろんApplication.StartupUriでもメインウィンドウを指定できる。

Application.StartupUri Property (System.Windows) | Microsoft Docs

こちらはメインウィンドウオブジェクトではなくxamlファイルを指定するという感じ。

新しい項目
新しい項目

新しい項目。

StartWindow.xaml
StartWindow.xaml

StartWindow.xamlを追加。

こっちはVisibility不要
こっちはVisibility不要

こっちはVisibility不要。xamlUriだけあればいい。

StartWindowが表示された
StartWindowが表示された

StartWindowが表示された。

Sample/wpf/Application/StartupUri/src/Application_ at master · bg1bgst333/Sample · GitHub

Application.MainWindow

Application.StartupUriではなくて、Application.MainWindowでメインウィンドウを指定することもできる。

Application.MainWindow Property (System.Windows) | Microsoft Docs

StartupUriを外す
StartupUriを外す

StartupUriを外してもビルドは通るが、

ウィンドウが表示されない
ウィンドウが表示されない

ウィンドウが表示されない。

MainWindowは文字列で指定できない
MainWindowは文字列で指定できない

MainWindowは文字列で指定できないので、

サブタグ
サブタグ

サブタグで指定する。

子要素にWindowオブジェクト
子要素にWindowオブジェクト

子要素にWindowオブジェクト。

これでも表示できない。
これでも表示できない。

VisibilityをVisibleに
VisibilityをVisibleに

VisibilityをVisibleにしないと表示されない。

表示された
表示された

表示された。

Sample/wpf/Application/MainWindow/src/Application_ at master · bg1bgst333/Sample · GitHub

x:Class

x:Classで、タグ名のクラスを基底クラスとして、具体的な派生クラス名を指定できる。

x:Class ディレクティブ | Microsoft Docs

新しい項目
新しい項目

新しい項目で、

Window2.xaml
Window2.xaml

既定のプロジェクトにWindow2.xamlを追加。

x:Class
x:Class

x:Classにxmlns_x.Window2を指定。

App.xamlでStartupUriにWindow2.xaml
App.xamlでStartupUriにWindow2.xaml

App.xamlでStartupUriにWindow2.xaml
起動するウィンドウがWindow1からWindow2に指し換わる。
これでビルドすると、

Window2.g.cs
Window2.g.cs

Window2.g.csが生成されているので、Window2クラスができていることがわかる。

中身も確認
中身も確認

中身も確認。

実行時
実行時

実行時はこうなる。

Titleを付ける
Titleを付ける

さみしいのでTitleぐらいは付ける。

Titleが付いた
Titleが付いた

Titleが付いた。

Sample/wpf/xmlns_x/Class/src/xmlns_x at master · bg1bgst333/Sample · GitHub

assembly

assemblyにクラスライブラリを指定することで、そのクラスライブラリのクラスもXAMLでタグとして使える。

WPF XAMLで別アセンブリのCLR名前空間を宣言する。 - Qiita

WPFプロジェクト
WPFプロジェクト

WPFプロジェクト。

DLL化したTestClassライブラリを置く
DLL化したTestClassライブラリを置く

これまで扱ってきたTestClassライブラリをDLL化したものを置く。

参照の追加
参照の追加

参照の追加。

TestClassを選択
TestClassを選択

TestClassを選択。

TestClass.csがないので認識されない
TestClass.csがないので認識されない

TestClass.csがないので認識されない。

assemblyにTestClassを指定するとビルドが通る
assemblyにTestClassを指定するとビルドが通る

assemblyにTestClassを指定するとビルドが通る。

デフォルト名前空間にpresentationframework
デフォルト名前空間にpresentationframework

デフォルト名前空間にpresentationframeworkを指定しても通る。

あとはこれも
あとはこれも

あとはこれも。

これも
これも

これも、普通に表示される。

Sample/wpf/xmlns/assembly/src/xmlns at master · bg1bgst333/Sample · GitHub

x:Name

x:Nameで、そのタグのオブジェクト名を指定できる。

x:Name ディレクティブ | Microsoft Docs

これまでも使ってきたTestClassタグで、

x:Name
x:Name

x:Nameを選択し、

test1
test1

test1を指定。

Window1.xaml.cs側からも使える
Window1.xaml.cs側からも使える

Window1.xaml.cs側からもtest1を使える。

このように、

プロパティの値
プロパティの値

XAML側で指定したTestPropertyNumの値をcsファイル側からMessageBoxで表示。

もちろんこちらも表示できる
もちろんこちらも表示できる

もちろんこちらも表示できる。

Sample/wpf/xmlns_x/Name/src/xmlns_x at master · bg1bgst333/Sample · GitHub

clr-namespace

clr-namespaceで、名前空間を指定すると、その名前空間のクラスがXAMLで使える。

XAML 名前空間および WPF XAML の名前空間の割り当て | Microsoft Docs

WPFプロジェクト
WPFプロジェクト

WPFプロジェクト。

新しい項目
新しい項目

新しい項目。

TestClass.cs
TestClass.cs

TestClass.cs

追加後
追加後

追加したら、

と書く。
BGST名前空間のTestClass。

選択できる
選択できる

名前空間BGSTを独自のキーワードbgstで使えるように選択できる。

まだこのまま
まだこのまま

clr-namespaceにBGST。
選択したが、XAMLデザイナの表示はまだこのまま。

ビルドは通る。
ビルドは通る。

ビルドは通る。

タグを入れてみたけど認識されない
タグを入れてみたけど認識されない

タグを入れてみたけど認識されない。

Gridを外して
Gridを外して

Gridを外して。

ビルドは通る
ビルドは通る

ビルドは通る。

ビルドしたら認識されたか
ビルドしたら認識されたか

ビルドしたら認識されたか。

上の再読み込みもクリックで適用
上の再読み込みもクリックで適用

上の再読み込みもクリックで適用。

静かになった
静かになった

静かになった。

改めてビルド
改めてビルド

改めてビルド。

オリジナルクラスのタグをXAMLで表示できた
オリジナルクラスのタグをXAMLで表示できた

オリジナルクラスのタグをXAMLで表示できた。
(まあテキスト表示されてるだけだが。)

Sample/wpf/xmlns/clr_namespace/src/xmlns at master · bg1bgst333/Sample · GitHub

xmlns:x

xmlns:xは、XAML言語の機能を表すキーワードで指定する名前空間

XAML 名前空間および WPF XAML の名前空間の割り当て | Microsoft Docs
XAMLの基礎(1/2) - @IT

WPFプロジェクト
WPFプロジェクト

WPFプロジェクト。

最初この状態
最初この状態

最初この状態。
仮に"xmlns:x"の行を削除すると、

x:Classが認識されない
x:Classが認識されない

x:ClassというXAMLのキーワードが認識されなくなる。

ビルドも通らない
ビルドも通らない

当然、ビルドも通らない。

元に戻す
元に戻す

元に戻せば、再び認識されて、

ビルドも通る
ビルドも通る

ビルドも通る。

Sample/wpf/xmlns_x/xmlns_x/src/xmlns_x at master · bg1bgst333/Sample · GitHub