2017-09-01 12 views
-1

私は私の問題への答えを探していますが、何か助けになるものは見つかりませんでした。別のウィンドウでテキストボックス入力を使用していますか?

問題は、ユーザーがテキストボックスに名前を入力してから、選択した名前をテキストブロックに表示する新しいウィンドウを開くボタンを押すことです。

私はテキストブロックの私の第二のウィンドウに結合使って試してみました:

{Binding Path=text, ElementName=TName} 

とTNAMEは...私が望んで最初のウィンドウからは何も示されなかっただけでした。 私は、最初のウィンドウからのテキストボックスからの入力の使い方について混乱しています。

<TextBox x:Name="TIName" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Name" Width="120" Height="23" VerticalAlignment="Top"/> 

これは私が私の最初のウィンドウで使用しているものであると:

<TextBlock x:Name="TName" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="{Binding Path=text, ElementName=TName} " VerticalAlignment="Top"> 

は、私は私の第二のウィンドウの上に持っているものです。

は、これが最初のウィンドウ上のボタンの背後にあるコードです:事前に

private void Submit_Click(object sender, RoutedEventArgs e) 
    { 
     var test= new test(); 

     this.Close(); 
     test.Show(); 
    } 

感謝:)任意のヘルプは大歓迎だろう。

+0

ここをクリックしてください。https://stackoverflow.com/questions/40379892/passing-values-through-forms-c-sharp –

+0

Thanks "test.TName.Text = this.TIName.Text;"働いた! – jmadp

答えて

1

あなたはバインディングでこれを行うことはできません。各ウィンドウの要素とその名前は、定義されているウィンドウの範囲になります。各ウィンドウの内容は互いに知りません。しかし

、これは動作するはずです:

private void Submit_Click(object sender, RoutedEventArgs e) 
{ 
    var test = new test(); 

    test.TName.Text = this.TIName.Text; 

    this.Close(); 
    test.Show(); 
} 

この結合:両方TNameTINameは、同じウィンドウにあった場合

{Binding Path=text, ElementName=TName} 

はなく、二つの小さな修正で、正しい次のようになります。バインドのプロパティ名では大文字と小文字が区別され、Textプロパティは大文字のTで始まります。そのコントロールにはtextという名前のプロパティ(すべて小文字)は存在しません。第2に、TextBoxの名前はTINameであり、TNameではありません。

それはこのようでなければならないであろう:両方のコントロールはここにそうではありません同じウィンドウ、にあった場合にのみ、

{Binding Path=Text, ElementName=TIName} 

しかし、再び。

+0

速い修正ありがとうございました^^修正が1行になるとは期待していませんでした: ') – jmadp

関連する問題