2016-05-04 17 views
2

私は、テキストボックスとボタンでカスタムのUserControlを作成しました。このUCをメインウィンドウに追加すると、UC内のボタンをクリックすると、UCテキストボックスのテキストがメインウィンドウのテキストボックスまたはラベルに転送されます。私が正しいとすれば、カスタムイベントを作成してどこかにバインドする必要がありますが、何か役に立つものが見つからないので、何か助けやチュートリアルがうれしいです。ユーザーコントロールからWPFの親ウィンドウに文字列を渡す方法は?

+0

最も単純な方法は、ボタンとテキストボックスをUCのカスタムプロパティで公開することです。public Button Button {get {return this.button; }} – glenebob

答えて

4

UCのプロパティを使用して、MainWindowでこのプロパティのpropertychangedイベントを購読することで、必要なものを簡単に達成できます。ユーザーコントロール

public class UserControl : BindableBase 
{ 

    private string textboxText; 
    public string TextBoxText 
    { 
     get { return textboxText; } 
     set { SetProperty(ref textboxText,value); } 
    } 

} 

テキストボックスがフォーカスを失ったときにこのように、プロパティtextboxTextが更新されます。メインウィンドウ

public class MainWindow 
{ 
    public UserControl UserControlInstance = new UserControl(); 
    public string textPropertyMainWindow; 
    public MainWindow() 
    { 
     UserControlInstance.TextBoxText.PropertyChanged += PropertyChangedHandler; 
    } 

    private void PropertyChangedHandler(object obj) 
    { 
     textPropertyMainWindow = UserControlInstance.TextBoxText; 
    } 
} 

は、あなたがポイントを得た願っています。さらなる助けが必要ならば元に戻す。

-1

これが最も簡単な方法でなければなりません。基本的に何度も使用できるので、練習するのがよいでしょう。

、のようなクラスのフィールドにデータ型を宣言し

string textwhichuserinputed; 

、イベントまたは方法割り当てた後(どこ)のような、

textwhichuserinputed= UCtextBox.Text; 

、値が変数に値を割り当てますの変数はUCtextBox.Textとして設定されます。そして代入の前に値はnullです。

その後、クラス内のどこにでも入力されたテキストを使用できます。

これは、実践するのが最も簡単で最も基本的な方法です。
これはグローバル変数と呼ばれます。

関連する問題