いつもお世話になっております。
C#の経験は数か月くらいで勉強中です。
今回windowsフォームアプリケーションで実現できたことをWPFアプリでできるのではと思い、試しているのですが、一つわからないことが出たので質問させていただきました。
前提・実現したいこと
WPFアプリにてMainWindow.xaml.csのpublic MainWindow()にコマンドライン引数を持たせたいです。
コマンドライン引数を設定しし引数があっていなければメインウィンドウを閉じるようにしようと思っています。
できればMainWindow.xaml.csの中でコマンドライン引数があるかを判定できるようにしたいです。
発生している問題・エラーメッセージ
デバックモードでステップインしていく中でメインウィンドウ画面が出る前に以下の例外が発生しています。
例外がスローされました: 'System.Windows.Markup.XamlParseException' (PresentationFramework.dll の中) '一致するコンストラクターが型 'テスト.MainWindow' に見つかりません。この型は、引数または FactoryMethod ディレクティブを使用して構築できます。' 行番号 '6'、行位置 '9'。
該当のソースコード
##App.xaml.cs
C#
1namespace テスト 2{ 3 /// <summary> 4 /// App.xaml の相互作用ロジック 5 /// </summary> 6 public partial class App : Application 7 { 8 [STAThread] 9 public static void Main()//最初に呼び出される 10 { 11 string[] args = Environment.GetCommandLineArgs(); 12 App app = new App(); 13 app.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative); 14 app.InitializeComponent(); 15 app.Run(new MainWindow(args)); 16 } 17 } 18}
MainWindow.xaml.cs
C#
1namespace テスト 2{ 3 /// <summary> 4 /// MainWindow.xaml の相互作用ロジック 5 /// </summary> 6 public partial class MainWindow : Window 7 { 8 public MainWindow(string[] args)//ここに引数を持たせる 9 { 10 InitializeComponent(); 11 } 12 } 13}
試したこと
以下のサイトを参考にコードを記述してみました。
1.WPF:Mainメソッドを書き変えるには?[C#/VB]
2.コマンドライン引数を所得
App.xaml.csの**app.Run(new MainWindow(args))のnew MainWindow(args)を削除すると
メインウィンドウが正常に出たので、app.Run()の中身のnew MainWindow(args)**がダメなのだということ
はわかったのですが、解決方法が探せません。App.xaml.cs上でコマンドライン引数を反省するのはできたの
ですが、MainWindow.xaml.cs上で判定することができません。
ご回答いただけば幸いです。宜しくお願い致します。
補足情報(FW/ツールのバージョンなど)
.NET Framework4.7.2
windows アプリケーション
回答2件
あなたの回答
tips
プレビュー