繁体   English   中英

ComboBox onChange(WPF,C#,绑定)后,TextBox不显示值

[英]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);
 }

但这不起作用。 缺少什么或我做错了什么?

如果IdFirstName都是实体类的属性,则可以将ComboBoxItemsSource属性设置为IEnumerable<YourEntityType>并将TextBoxText属性绑定到ComboBoxSelectedItemFirstName属性:

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();

您已将文本框与属性绑定,但是我无法在代码中看到是否正在设置属性。 将属性设置为所选项目时,您的文本框将显示所选名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM