Добавьте программно ListViewItem к Listview в WPF [дубликат]

Во втором примере вам нужно указать UpdateSourceTrigger=PropertyChanged:

<TextBlock x:Name="FirstName"/>
<TextBox Text="{Binding Path=FirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

В противном случае источник обновляется только тогда, когда TextBox теряет фокус.

6
задан Community 23 May 2017 в 10:33
поделиться

5 ответов

Это - то, как Вы добавили бы a ListViewItem созданный в коде к Вашему ListView:

myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." });

Однако я соглашаюсь с MrTelly, что это не должно быть необходимо, необходимо устанавливать ListView.ItemsSource к некоторому набору вместо управления ListView.Items непосредственно.

Если Вы предоставляете нам больше подробной информации о том, что Вы хотите выполнить, возможно, мы можем помочь Вам сделать это путь WPF, который является не всегда простым способом сначала, но это намного легче в конечном счете.

6
ответ дан 8 December 2019 в 13:49
поделиться

При использовании ListView, поскольку предназначается, что это будет связано с базовым списком некоторого Объекта, и тот класс должен реализовать INotifyChanged. В WPF Вы непосредственно не добавляете/удаляете объекты от ListView, Вы имеете дело со связанной структурой списка, и это уведомляет UI изменения, которое затем умно перерисовывает себя с новыми объектами.

1
ответ дан 8 December 2019 в 13:49
поделиться

Вы можете динамически добавлять столбцы в ListView с помощью вложенных свойств. Ознакомьтесь с этой статьей о CodeProject , в ней точно объясняется, что ...

WPF DynamicListView - привязка к DataMatrix

0
ответ дан 8 December 2019 в 13:49
поделиться

Я задал точно такой же вопрос ЗДЕСЬ (и ответил сам - у меня была проблема в моем коде). Надеюсь, это поможет.

4
ответ дан 8 December 2019 в 13:49
поделиться

Добавление его непосредственно в ListView в вашем приложении не обязательно является «WPF-способом». Рассмотрим это:

public class BindableListViewModel 
{

     public IList<TypeOfObjectToDisplay> AllObjectsToDisplay;
     public ICommand AddNewItemToList;

     public BindableListViewModel()
     { 
       AllObjectsToDisplay = new ObservableList<TypeOfObjectToDisplay>();
       AddNewItemToList = new RelayCommand(AddNewItem(), CanAddNewItem());
     }

     public bool CanAddNewItem()
     {
       //logic that determines IF you are allowed to add
       //For now, i'll just say that we can alway add.
        return true;
     }

     public void AddNewItem()
     {
       AllObjectsToDisplay.Add(new TypeOfObjectToDisplay());
     }

}

Затем в XAML все, что нам нужно сделать, это привязать ItemsSource нашего ListView к нашему списку AllObjectsToDisplay. Это позволяет нам разделить зависимость добавления объектов непосредственно в наш ListView; мы можем использовать силу WPF привязки данных к , чтобы удалить прямую зависимость от того, КАК мы добавляем бизнес-объекты в наш контейнер пользовательского интерфейса, в котором мы их отображаем - очень полезная практика!

4
ответ дан 8 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: