当 itemssource 在 wpf datagrid 中为 null 时显示一个空行

Show an empty row when itemssource is null in wpf datagrid

我正在使用 mvvm 在 wpf 中开发一个项目。我只想在 wpf 数据网格上显示一行以添加新项目,我有一个 ItemsSource 但它是 null 并且 canUserAddRows 设置为 true。

提前致谢。

您需要某种 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 !
     }
}

想想:你不能在null对象上调用.Add()(会抛出NullReferenceException)。那么控件本身应该如何允许通过 UI - 没有任何值可以存储在 !

示例:

视图模型:

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>

结果: