2017-05-16 6 views
0

まずは、私は最終的に最終的なC#プロジェクトを完成させているオブジェクト指向プログラミングの初心者です。C#windows2からwindows1へのWPF渡し値

私はコンソールアプリケーション用に作ったライブラリクラス(dll)を作成しました。これは私の最初のプロジェクトでしたし、このプロジェクトではWPFアプリケーション用にDLLを再利用する必要があります。 WPF用に私のコードを修正しました。

メインプログラムが動作し、dll(コレクションベースクラス、アーティスト、キュレーター、アートなどの特定の名前)を呼び出しているログイン用のwindowsWindowsがあります。

私の問題は、アートを売るためにwindows2(調査目的)を使用しなければならないということです。私は(string IDArt、double SellPrice)のような2つのパラメータを受け入れるdllクラスメソッドを呼び出します。 私がした間違いは、windows2でギャラリーの新しいインスタンスを再作成することでした。

私は何とか私の(this)インスタンスをwindows2に送信してから、windows1への変更を取得する必要があることを理解しています。

私はこの問題にどのように取り組むべきかと思います。私が学んだことからC#を理解していることを知っておいてください。しかし、私は本当にそれを知っていて、それを習得していないからです。前もって感謝します!

答えて

1

C#は、オブジェクト指向であるので、あなたは、よりに同じコレクションを再利用することを計画しているので、このことを行うために権利方法は、ウィンドウ自体(より低い抽象化層であなたのCollectionクラスのインスタンスを作成することですたとえば、グローバルなAppコンテキストで静的に - そして、データバインディングを使用してウィンドウ間でコレクションを同期させます。 (期待どおりに動作するには、このために、リアルタイムで、あなたのCollectionクラスが、それは新しい要素でリフレッシュする必要があり、ウィンドウのコンテキストを知らせるためにIObservableINotifyPropertyChangedを実装することも必要である。)

+0

私が理解していることは、私のコレクションの別の抽象的なページを作成し、windows1とwindows2などの必要なフォームに送信する必要があるということです。また、Interfaceméthodeを理解していますが、デリゲート/イベントでも同じことを実践する機会はあまりありませんでした。 – Bspolobs

+0

私が知る限り、_App.xaml.cs_ファイル(これはVisual Studioを使用している限り長く呼ばれています)にあります。 – Lukasz032

0

これを行うには非常に多くの方法があります。

ウィンドウ2では::、私はあなたが他の場所からメインウィンドウのフィールドまたはプロパティにアクセスしたい場合、あなたはこのようにそれを行うことができます

..あなたにそれらのいくつかを伝える

//Calling MainWindow from Window2 
var form = App.Current.MainWindow as ManinWindow; 
form.textBox1.Text = "My Art"; 
MessageBox.Show(form.textBox1.Text); 

または、あなたは、このようにウィンドウ2にごウィンドウ1から引数を渡すことができます。おそらく、これを行う最も簡単な方法は、私のお気に入りのいずれかの方法も、アプリケーションの設定を使用することです

//Window 1 
private void btnShowWindow2_Click(object sender, RoutedEventArgs e) 
{ 
    var form = new Window2("My Art", 100); 
    form.Show(); 
} 

//Window 2 Constructor 
public Window2(string ArtName, int Price) 
{ 
    MessageBox.Show("ArtName: " + ArtName + "\nPrice: " Price.ToString() + " dollars"); 
} 

または

//Window1 
private void btnShowWindow2_Click(object sender, RoutedEventArgs e) 
{ 
    var form = new Window2() 
    { 
     Price = 200, 
     ArtName = "My Art" 
    }; 
    form.Show(); 
} 

//Window2 

publuc string ArtName {get; set;} 
publuc int Price {get; set;} 

private void Window2_Loaded(object sender, RoutedEventArgs e) 
{ 
    MessageBox.Show("ArtName: " + ArtName + "\nPrice: " Price.ToString() + " dollars"); 
} 
0

「Project \ WpfApp1 Properties」に移動して「Settings」タブに移動し、そこに設定を作成し、「IDArt」という1つの設定名を作成し、文字列型に設定し、別の設定名を「SellPrice」に設定して設定しますダブルタイプにする。 は今youhaveが行うすべては、このコードを使用しているこれらの設定にアクセスするには:

WpfApp1.Properties.Settings.Default.IdArt ;,

WpfApp1.Properties.Settings.Default.SellPriceを。

+0

私はできるすべての検索と私が得たすべての助けを借りて、みんなありがとう。私は最終的に私の小さなインスタンスをwindows2のコンストラクタに渡すことで私の小さな問題を解決しました! – Bspolobs

関連する問題