VS 2010でWPFアプリケーションを作成し、グリッドにボタンを配置すると、C#コードからコントロールにアクセスできます。XAMLの「名前」フィールドと同じ名前のボタンクラスインスタンス変数があります。しかし、VS 2012 RCを使用してWPFプロジェクトを作成すると、コントロールのインスタンスが表示されません。何が問題になる可能性がありますか?VS 2010と2012の間にデフォルトのプロジェクト設定の違いはありますか?
3 に答える
コードビハインドについて話している場合は、ボタンの属性 を使用するだけで、ボタンを再度宣言しなくてもボタンにアクセスできるはずです。x:name
ここで、MVVMについて話している場合は、ボタンを使用する前にデータコンテキストを設定する必要があります。
2012(リリース候補)を使用している場合、xamlで宣言された要素にアクセスしようとすると(リリース候補)、csファイルの背後にあるコードのインテリセンスが得られず(コードを記述せずにコードを記述しなければなりません)、その名前の要素はプロジェクト以外にないことを示唆しています。コンパイルして動作します。したがって、インテリセンスなしでコードを記述してコンパイルすることをお勧めします。
YourButton.IsEnabled = false;
これは、MVVMの使用を促進するためのVS 2012のデフォルトであると思いますが、それは単なる考えにすぎません。
静的メソッドでコントロールにアクセスしていないことを確認する必要があります。
同じ問題で別の経験があります。
コードビハインドから要素にアクセスしようとすると、それを示すインテリセンスがなく、メソッドを使用できませんでした。そこで、プロジェクトをデバッグしようとしましたが、論理的で構文エラーではないため、XAMLコードやその他の場所に表示されない問題があることがわかりました。私はそれを修正し、それから私はコードビハインドからそれにアクセスすることができました。アクセスしようとしている要素が正しく定義されており、論理的に正しいプロパティを持っていることを確認してください。
<ComboBox x:Name="_days" Selected="0" Width="50"/>
これはコードであり、Selectedプロパティは論理的に正しくありませんでした。これは、コンボボックスに要素がなく、0番目の要素を選択できないためです。