Во втором примере вам нужно указать UpdateSourceTrigger=PropertyChanged
:
<TextBlock x:Name="FirstName"/>
<TextBox Text="{Binding Path=FirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
В противном случае источник обновляется только тогда, когда TextBox теряет фокус.
Это - то, как Вы добавили бы a ListViewItem
созданный в коде к Вашему ListView
:
myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." });
Однако я соглашаюсь с MrTelly, что это не должно быть необходимо, необходимо устанавливать ListView.ItemsSource
к некоторому набору вместо управления ListView.Items
непосредственно.
Если Вы предоставляете нам больше подробной информации о том, что Вы хотите выполнить, возможно, мы можем помочь Вам сделать это путь WPF, который является не всегда простым способом сначала, но это намного легче в конечном счете.
При использовании ListView, поскольку предназначается, что это будет связано с базовым списком некоторого Объекта, и тот класс должен реализовать INotifyChanged. В WPF Вы непосредственно не добавляете/удаляете объекты от ListView, Вы имеете дело со связанной структурой списка, и это уведомляет UI изменения, которое затем умно перерисовывает себя с новыми объектами.
Вы можете динамически добавлять столбцы в ListView с помощью вложенных свойств. Ознакомьтесь с этой статьей о CodeProject , в ней точно объясняется, что ...
Я задал точно такой же вопрос ЗДЕСЬ (и ответил сам - у меня была проблема в моем коде). Надеюсь, это поможет.
Добавление его непосредственно в 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 привязки данных к , чтобы удалить прямую зависимость от того, КАК мы добавляем бизнес-объекты в наш контейнер пользовательского интерфейса, в котором мы их отображаем - очень полезная практика!