[英]Get selected value from Combobox to Datagrid in WPF
我的代码中有以下 ViewModel:
public List<Product> ProList { set; get;} = new List<Product>
{
new Product
{
Num = 1,
CName = "AAA",
CAdd = "Maple",
CPh = 012345
},
new Product
{
Num = 2,
CName = "BBB",
CAdd = "Moon",
CPh = 012345
},
new Product
{
Num = 3,
CName = "CCC",
CAdd = "River",
CPh = 012345
}
};
这就是我将数据绑定到Combobox
中的 Combobox 的方式。
<Combobox Name="MyComboBox" IsEditable="True" Text="Select" ItemsSource="{Binding ProList}" DisplayMemberPath="CName" SelectedValue="CName"/>
我想在Datagrid
中显示Combobox
的选定值。
它应该看起来像这样:
AAA
No Name Address Ph No
1 AAA Maple 012345
如果您在 ViewModel 中添加“SelectedProduct”属性并将文本块绑定到该属性。 文本框将显示来自所选产品的数据。
视图模型
class MyViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private Product _selectedProduct;
public Product SelectedProduct
{
get { return _selectedProduct; }
set
{
_selectedProduct = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedProduct)));
}
}
public ObservableCollection<Product> ProList { get; } = new ObservableCollection<Product>
{
new Product
{
Num = 1,
...
将 ComboBox XAML 更改为 select 当前项到 SelectedProduct 属性。 然后将 TextBlocks 绑定到选定的产品属性。
<ComboBox Name="MyComboBox" IsEditable="True" Text="Select" ItemsSource="{Binding ProList}" DisplayMemberPath="CName"
SelectedItem="{Binding SelectedProduct}"/>
<TextBlock Text="{Binding SelectedProduct.CName}"/>
我猜你已经在 MainWindow 中有 ViewModel 作为 DataContext。
PropertyChanged 事件触发绑定以更新文本块。
编辑:数据网格
DataGrid 想要一个集合作为源。 您可以在获取所选产品的视图 model 中添加一个集合,然后将 DataGrid 绑定到该集合。
在 ViewModel class 中:
public ObservableCollection<Product> SelectedProducts { get; } = new ObservableCollection<Product>();
在 SelectedProduct 属性中添加选定的产品:
public Product SelectedProduct
{
get { return _selectedProduct; }
set
{
_selectedProduct = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedProduct)));
SelectedProducts.Clear();
SelectedProducts.Add(value);
}
}
在 XAML 中添加 DataGrid
<DataGrid ItemsSource="{Binding SelectedProducts}"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.