私はC#の初心者です。私は「部分的な」クラスのアイデアを初めて知りました。部分クラスの外で変数を使用するにはどうすればよいですか?
この "MainWindow"クラスの外にある "grid"変数にアクセスしたいと思います。それをどうやってやりますか?あなたのクラスが異なるファイル間で分割され
私はC#の初心者です。私は「部分的な」クラスのアイデアを初めて知りました。部分クラスの外で変数を使用するにはどうすればよいですか?
この "MainWindow"クラスの外にある "grid"変数にアクセスしたいと思います。それをどうやってやりますか?あなたのクラスが異なるファイル間で分割され
部分的な手段は、それが他のクラスへの変数の暴露とは何の関係もありません。
あなたのグリッドは現在のメソッドのローカル変数なので、他の人はアクセスできません。アクセス可能にしたい場合は、代わりにプロパティとして定義します。
public DataGrid Grid { get; set; }
すごい、それは私が必要なものです。今私は新しい問題があります! grid(grid.Items.Refresh())のプロパティにアクセスしようとすると、次のエラーが発生します。 System.InvalidOperationException:呼び出し元スレッドは、別のスレッドがそのオブジェクトを所有しているため、このオブジェクトにアクセスできません。 – MrDysprosium
技術的には可能ですが、クラス外でデータグリッドにアクセスできないようにする必要があります。グリッドはクラスによって管理されているビューの一部です。そのため、他のクラスからグリッドにアクセスできるようにすると、フォームの実装の詳細を表示できるようになり、カプセル化が解除されます。
I have another class,
Server
, and it receives data that I wish to add togrid.ItemSource
.
次に、あなたのServer
クラスは、フォームにグリッドをバインドするデータソースを提供する必要があります。言い換えれば、アクセスは他の方向に進むべきです。
ああ!それは面白いです...私はこれを実装する方法を考えようとしています... 編集:さて、冗談、それは私がやっていることです。私はちょうどそれを正しい方法と考えていませんでした。 – MrDysprosium
あなたは今、あなたはこのよう外
var x = MainWindow.grid;
内の変数にアクセスすることができ、この
ようなクラスの公共メンバーとして変数を宣言する必要がありますか?別のクラス?彼らはどのようにつながっていますか?そのクラスのメソッドを呼び出す場合は、それをパラメータとして渡すのはなぜですか?そうでない場合は、このプロパティを持つStaticクラスですか? – Shyju
@Shyju 私は別のクラス "Server"を持っていて、grid.ItemSourceに追加したいデータを受け取ります。 パブリック部分クラスMainWindow:Windowをpublic static partialクラスMainWindow:Windowに変更すると、次のエラーが発生します。 静的クラス "MainWindow"は、 'Window'タイプから派生することはできません。静的クラスはオブジェクトから派生しなければなりません。 – MrDysprosium
あなたはそれをすることはできません、そして、それは部分的なクラスであることとは関係ありません。変数 'grid'はあなたのクラスのメソッド内部のローカル変数です。 – dasblinkenlight