Program.csからコントロールのテキストプロパティにアクセスしようとしていますが、保護されたレベルのためにアクセスできないと表示されます。どうすればこれを修正できますか?
これはコントロールのデフォルトのプロパティであり、指定されたコントロールを含むフォームのデザインビューに移動し、コントロールのモディファイアプロパティをパブリックまたは内部に変更することで解決できます。それはやるべきだ! :)
制御保護レベルが解決されました
IDでデザイナファイル検索コントロールに移動します。例:txtModelの変更protected修飾子からpublic修飾子
背後にある概念は保護レベルです。オブジェクト指向パラダイムで学習したように、クラスメンバーの変数をプライベートに保ち、プロパティから設定または取得します。そのため、これは適切なアプローチではありません。
x:FieldModifier="public"
を使用します。例:.
<TextBlock x:FieldModifier="public" x:Name="AccessibleTextBlock" />
ここで説明されているように: XAML名前付きフィールドの可視性の変更
私の場合、UserControlを別のDLLに配置します。 WPFの規則では、すべての名前付きフィールドをデフォルトでinternal
として設定します。 x:FieldModifier="public"
を使用すると、問題が解決しました。