2012-03-03 13 views
6

から制御します私はsucceできアクセスXAMLは、私は私のVSプロジェクトの2つのファイルを持っているC#コードビハインド

void TextBox1_SelectionChanged(object sender, RoutedEventArgs e) 
{ 
    TextBox t = e.Source as TextBox 
} 

は.cs、私は以下の方法を持っています上のイベントハンドラを押してください。その後、TextBox1を取得し、e.Sourceを使用してそのプロパティを取得できますが、TextBox2にアクセスしたいと思います。追記として

.csファイルファイルには、私が参照していますちょうどC#クラス、ないxaml.csです。さらに、UserControl経由でこれを実装できることを理解していますが、このシナリオの範囲外の理由でこのシナリオでは実行できません。

TextBox2のプロパティを取得/設定する方法についてアドバイスしてください。

ありがとうございました。

EDIT:この他の入力は?この問題を回避するために、TextBox2_Loadedというイベントハンドラを追加し、e.Sourceをインスタンス変数に設定しました。次に、TextBox1_SelectionChangedでインスタンス変数にアクセスできます。コントロールを直接ターゲットにすることが本当に好きです(例:TextBox2.IsEnabled)。どこかで宣言や遺産を逃しているに違いない。 FindNameを使ってコントロールを見つけることさえできません。限り、あなたはnamein XAMLを設定しているとして、あなたは名前で直接アクセスすることができ

+0

は、繰り返しコントロール(gridview、listview..etc)の項目としてtextbox2を使用していますか? –

+0

いいえ、私はグリッドビューやリストビューを使用していません – Josh

答えて

3

さてさて、私は明らかに取り残されていましたこの投稿の重要なコンポーネント... My TextBoxコントロールは、DataTemplateコントロールの内部にあります。私の研究では、DataTemplateコントロール内でTextBoxコントロールにアクセスすることはできません。私は本当にそれが重要だとは思わなかったが、このシナリオが存在するときにインスタンス変数が作成されないと思う。

これを誤って解釈した場合は、入力してください。ここでは、Loadedイベントを追加し、TextBoxコントロールをインスタンス変数として定義して、他のアクティビティが発生したときにプロパティにアクセスしてプロパティを変更できるようにしました。

ありがとうございます。

+0

もちろん、ロードされたイベントであっても、DataTemplateから名前付きコンポーネントにアクセスすることはできません。 特定のUIコンポーネントのインスタンスをキャッチする必要があります。 – Ouarzy

3

(XAMLコンパイラはあなたのためのインスタンス変数を作成します。)

void TextBox1_SelectionChanged(object sender, RoutedEventArgs e) 
{ 
    TextBox t = e.Source as TextBox 
    TextBox2.Text = "Whatever"; 
} 
+0

何らかの理由でTextBox2を使用することはできません。 Intellisenseはそれを表示せず、コンパイラは未定義であると判断します。私は何かから私のクラスを継承する必要がありますか? public partial classカスタム:? – Josh

+0

xamlコンパイラが作成するフィールドをStudioが見ることができるように、ビルドを実行してください。 EDIT。はい、コードビハインドは、XAMLに一致する部分クラスである必要があります。 – GazTheDestroyer

+0

自分のクラスの定義が正しいこと、または何かから継承する必要があることを確認していますか?また、私は自分のプロジェクトを何度も作りました。 – Josh

0

これはちょうど私に起こった。私は私のソリューションを閉じて、それを再び開く必要がありました。

関連する問題