Вам нужен какой-то ItemsSource
, то есть not null
.Просто инициализируйте ваш ObservableCollection<yourType>
.
Проще всего сделать это через конструктор вашей ViewModel:
public class ViewModel : INotifyPropertyChanged
{
public ViewModel()
{
_yourCollection = new ObservableCollection<yourType>();
//Now Items can be added, via code behind, or UI !
}
}
Подумайте об этом : Вы не можете вызвать .Add()
наnull
объект (будет выбрасывать NullReferenceException
).Так как же самому элементу управления разрешить это через пользовательский интерфейс - в нем нечего хранить значения!
Пример:
ViewModel:
public class ViewModel
{
public ObservableCollection<Model> Collection { get; set;}
public ViewModel()
{
Collection = new ObservableCollection<Model>();
//Now Items can be added, via code behind, or UI !
}
}
Модель:
public class Model
{
public string Text { get; set; }
}
Xaml:
<DataGrid CanUserAddRows="True"
AutoGenerateColumns="False"
IsReadOnly="False"
ItemsSource="{Binding Collection}">
<DataGrid.Columns>
<DataGridTextColumn Width="*"
Header="Value"
Binding="{Binding Text}"/>
</DataGrid.Columns>
</DataGrid>
Результат: ![enter image description here](https://i.stack.imgur.com/4Ya5c.png)