2009-03-20 3 views

ответ

1

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

6

Это, как вы бы добавить ListViewItem, созданный в коде вашей ListView:

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

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

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

4

я задал тот же вопрос HERE (и ответил сам - у меня была проблема в моем коде). Надеюсь, это поможет.

4

Добавление его непосредственно в 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 для привязки данных до . Удалите прямую зависимость о том, как мы добавляем объекты бизнеса в наш контейнер пользовательского интерфейса, которые мы показываем в них - очень полезная практика!

2

(извините, не могу комментировать пока)

Как MrTelly находится на ...

свяжи ListView к ObservableCollection

ObservableCollection<MyClassItem> lvList = new ObservableCollection<MyClassItem>(); 
myListview.ItemSource = lvList; 

// Add an item 
lvList.Add(new MyClassItem("firstname", "lastname")); 

Таким образом, он будет автоматически обновлять Пользовательский интерфейс, когда в коллекцию вносятся изменения.

Смежные вопросы