[英]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.