[英]TextBox not display value after ComboBox onChange (WPF, C#, Binding)
我有UserControl包含ComboBox和TextBox:
<ComboBox x:Name="cmbId" SelectionChanged="cmbId_SelectionChanged" />
<TextBox x:Name="txb1" Visibility="Hidden" Text="{Binding Path=FirstName, UpdateSourceTrigger=PropertyChanged}" />
我已将值加载到ComboBox:
public MyDataView()
{
InitializeComponent();
MyDBViewDataContext mydata = new MyDBViewDataContext();
cmbId.ItemsSource = (from q in mydata.test_views
select q.Id).ToList();
}
当用户在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);
}
但这不起作用。 缺少什么或我做错了什么?
如果Id
和FirstName
都是实体类的属性,则可以将ComboBox
的ItemsSource
属性设置为IEnumerable<YourEntityType>
并将TextBox
的Text
属性绑定到ComboBox
的SelectedItem
的FirstName
属性:
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
事件。
另一个选择是在事件处理程序中实际设置TextBox
的Text
属性:
txb1.Text = var queryAll = (from q in myDataList.test_views
where q.Id.Equals(myId)
select q.FirstName).FirstOrDefault();
您已将文本框与属性绑定,但是我无法在代码中看到是否正在设置属性。 将属性设置为所选项目时,您的文本框将显示所选名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.