当 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>
结果:
我正在使用 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>
结果: