这部分有效。
在我的C#.NET WPF XAML中,我有一个静态的ComboBox和一个静态的TextBox。TextBox显示同一DataTable中的另一列(在ComboBox的ItemSource中)。列“ rr_code”是公司名称列,列“ rr_addr”是地址列。
<ComboBox x:Name="CompanyComboBox1" IsEditable="True" IsTextSearchEnabled="True" IsSynchronizedWithCurrentItem="False"/>
<TextBox x:Name="StreetTextBox1" DataContext="{Binding SelectedItem, ElementName=CompanyComboBox1}" Text="{Binding rr_addr}" IsManipulationEnabled="True"\>
ComboBox以编程方式从DataTable中的列读取:
CompanyComboBox1.ItemsSource = Rails.DefaultView; // Rails is a DataTable
CompanyComboBox1.DisplayMemberPath = "rr_code"; // column name for company name
这部分不起作用
问题是,我现在有一个“添加公司”按钮,该按钮可以在StackPanel中动态地并具有此确切功能来创建新表单。ComboBox完全按预期工作。这是我到目前为止的内容:
ComboBox companyComboBox = new ComboBox();
companyComboBox.ItemsSource = Rails.DefaultView;
companyComboBox.IsEditable = true;
companyComboBox.IsTextSearchEnabled = true;
companyComboBox.DisplayMemberPath = "rr_code";
问题出在TextBox中,当我更改动态companyComboBox时它不会更新,因此我确定它与绑定有关。
TextBox streetTextBox = new TextBox();
streetTextBox.DataContext = companyComboBox;
Binding b = new Binding("rr_addr");
b.Mode = BindingMode.Default;
b.Source = companyComboBox.SelectedItem;
streetTextBox.SetBinding(ComboBox.SelectedItemProperty, b);
为TextBox streetTextBox设置绑定的正确方法是什么?
在纯C#中,此特定XAML + C#数据绑定的等效代码为:
ComboBox companyComboBox = new ComboBox();
companyComboBox.ItemsSource = Rails.DefaultView; // Rails being DataTable
companyComboBox.IsEditable = true;
companyComboBox.IsTextSearchEnabled = true;
companyComboBox.DisplayMemberPath = "rr_code";
Binding b = new Binding("SelectedItem.rr_addr"); // The selected item's 'rr_addr' column ...
b.Source = companyComboBox; // ... of the companyComboBox ...
TextBox streetTextBox = new TextBox();
streetTextBox.SetBinding(TextBox.TextProperty,b); // ... is bound to streetTextBox's Text property.
错误在最后一行。SetBinding需要具有目标而不是源的属性。另外,绑定声明需要“ SelectedItem”。因为某些原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句