2017-04-13 2 views
2

(バインディング、WPF、C#)と、コンボボックスのonChange後の値を表示しませんComboBoxで、TextBoxは値を表示する必要があります。テキストボックスは、ユーザーコントロールは、コンボボックスおよびテキストボックスを含んでいる私は

private void cmbId_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
      int myId = 0; 
      Int32.TryParse(cmbId.Text, out myId); 

      txb1.Visibility = Visibility.Visible; 

      MyDBViewDataContext myDataList = new MyDBViewDataContext(); 
      var queryAll = (from q in myDataList.test_views 
         where q.Id.Equals(myId) 
         select q); 
} 

これは機能しません。何かが見当たりませんか?

+0

FirstNameという名前のプロパティにバインドしています...名前はどこから来ると思われますか? – mm8

+0

あなたは何をすると思いますか? – Adwaenyth

+0

'FirstName'を設定する必要があります。次に、' FirstName'のセッターで 'NotifyPropertyChanged'イベントを発生させる必要があります – Stuart

答えて

2

IdFirstNameの両方があなたのエンティティクラスのプロパティである場合、あなたはIEnumerable<YourEntityType>ComboBoxItemsSourceプロパティを設定し、ComboBoxSelectedItemFirstNameプロパティにTextBoxTextプロパティをバインドできます。

public MyDataView() 
{ 
    InitializeComponent(); 
    MyDBViewDataContext mydata = new MyDBViewDataContext(); 
    cmbId.ItemsSource = (from q in mydata.test_views 
         select q).ToList(); 
} 

<ComboBox x:Name="cmbId" DisplayMemberPath="Id"/> 
<TextBox x:Name="txb1" Visibility="Hidden" Text="{Binding Path=SelectedItem.FirstName, UpdateSourceTrigger=PropertyChanged, ElementName=cmbId}" /> 

これで、SelectionChangedイベントを処理する必要はありません。

他のオプションは、実際にイベントハンドラでTextBoxTextプロパティを設定するには、次のようになります。

txb1.Text = var queryAll = (from q in myDataList.test_views 
        where q.Id.Equals(myId) 
        select q.FirstName).FirstOrDefault(); 
+0

ありがとうございます。コンボボックスの選択後? – 4est

+0

それは本当に別の問題です。 Textプロパティに基づいてVisibilityプロパティを設定するスタイルを使用できます。しかし、別の問題がある場合は、新しい質問をしてください。 – mm8

+0

私はやります、ありがとう! – 4est

1

あなたはプロパティを使用してテキストボックスをバインドされているが、私はあなたかどうか、あなたのコード内で見ることができませんあなたの財産を設定しています。選択した項目にプロパティを設定すると、選択した名前がテキストボックスに表示されます。

関連する問題