簡體   English   中英

從 Combobox 中獲取選定的值到 WPF 中的 Datagrid

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM