【问题标题】:Show an empty row when itemssource is null in wpf datagrid当 wpf 数据网格中的 itemssource 为空时显示一个空行
【发布时间】:2018-10-01 10:32:47
【问题描述】:

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

提前致谢。

【问题讨论】:

  • 欢迎来到 StackOverflow !在提出问题时,您应该提供尽可能多的细节。这包括您已经拥有的代码以及有关您解决问题的努力/进度的报告。

标签: c# wpf mvvm wpfdatagrid


【解决方案1】:

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

结果:

【讨论】:

    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2010-11-17
    • 1970-01-01
    • 2012-12-13
    • 2016-04-15
    相关资源
    最近更新 更多