WPF Listview не отображается при добавлении элемента - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь динамически добавлять элементы в представление списка в WPF, но не знаю, почему отображаются какие-либо элементы. Хотя это была проблема с обновлением, я попытался использовать ObservableCollection, но это не сработало. Я получаю информацию в двух текстовых блоках и хочу, чтобы они отображались в списке при нажатии кнопки.

Не могли бы вы помочь мне разобраться в проблеме?

Мой WPF со списком

<ListView Name="listview" Margin="0 10 0 0" Height="150" ItemsSource="{Binding Recette}">
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding nomP}" Header="Nom" Width="250"/>
                    <GridViewColumn DisplayMemberBinding="{Binding quantP}" Header="Quantité" Width="100"/>

                </GridView>
            </ListView.View>
</ListView>

Мои .cs:

public List<Produits> Recette { get; set; }
    public AjoutRecette()
    {
        InitializeComponent();
    }

    private void btnAjoutProd_Click(object sender, RoutedEventArgs e)
    {
        string nomP = combobProd.Text;
        int quantP = int.Parse(txtbQuantité.Text);
        Produits prod = new Produits(nomP, quantP);
        Recette.Add(prod);
    }

и вот что я уже пробовал с ObersvableCollection:

public ObservableCollection<Produits> Recette { get; set; }
    public AjoutRecette()
    {
        InitializeComponent();
    }

    private void btnAjoutProd_Click(object sender, RoutedEventArgs e)
    {
        Recette = new ObservableCollection<Produits>();
        string nomP = combobProd.Text;
        int quantP = int.Parse(txtbQuantité.Text);
        Produits prod = new Produits(nomP, quantP);
        Recette.Add(prod);
    }

Большое спасибо!

1 Ответ

1 голос
/ 24 апреля 2020

Чтобы это сработало, проверьте следующие пункты:

  1. Пожалуйста, измените Recette на тип ObservableCollection<Produits> вместо List<Produits>. Вам нужно будет настроить тип свойства, а также часть кода, в которой вы создаете экземпляр коллекции. Вы можете просто сделать:

    public ObservableCollection<Produits> Recette { get; set; } = new ObservableCollection<Produits>();
    
  2. Убедитесь, что свойство DataContext установлено правильно. Один из способов сделать это - установить DataContext в конструкторе AjoutRecette:

    public AjoutRecette()
    {
        InitializeComponent();
        listview.DataContext = this;
    }
    
  3. Кроме того, убедитесь, что свойства nomP и quantP присутствует в Produits классе.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...