2016-04-21 87 views
1

我需要允許用戶添加是直接在DataGrid中的信息,但把「CanUserAddRows」屬性不工作,只出現如下:如何將空行添加到DataGrid?

enter image description here

這是我的DataGrid:

<DataGrid x:Name="dtgPersons" Grid.Row="3" CanUserAddRows="True"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="N°" Width="*" /> 
     <DataGridTextColumn Header="Name" Width="*" /> 
     <DataGridTextColumn Header="Carrer" Width="*" /> 
     <DataGridTextColumn Header="Group" Width="*" /> 
     <DataGridTextColumn Header="Age" Width="*" /> 
    </DataGrid.Columns> 
</DataGrid> 

編輯

這是新的網格代碼:

<DataGrid x:Name="dtgPerson" Grid.Row="3" ItemsSource="{Binding lstPerson}" AutoGenerateColumns="False" CanUserAddRows="True"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="N°" Width="*" Binding="{Binding No}" /> 
     <DataGridTextColumn Header="Name" Width="*" Binding="{Binding Name}" /> 
     <DataGridTextColumn Header="Carrer" Width="*" Binding="{Binding Carrer}" /> 
     <DataGridTextColumn Header="Group" Width="*" Binding="{Binding Group}" /> 
     <DataGridTextColumn Header="Age" Width="*" Binding="{Binding Age}" /> 
    </DataGrid.Columns> 
</DataGrid> 

而這背後是我的代碼: 我的ObservableCollection:

public ObservableCollection<Person> lstPerson { get; set; } 

我的主窗口

public MainWindow() 
{ 
    InitializeComponent(); 
    DataContext = this; 
    lstPerson = new ObservableCollection<Person>(); 
} 

我Person類

public class Person 
{ 
    public int No { get; set; } 
    public string Name { get; set; } 
    public string Carrer { get; set; } 
    public string Group { get; set; } 
    public int Age { get; set; } 
} 

回答

3

1)改變你格柵XAML

<DataGrid ItemsSource="{Binding GridCollection}" 
      CanUserAddRows="True" 
      AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="N°" Binding="{Binding Number}" Width="*" /> 
      <DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*" /> 
      <DataGridTextColumn Header="Carrer" Binding="{Binding Career}" Width="*" /> 
      <DataGridTextColumn Header="Group" Binding="{Binding Group}" Width="*" /> 
      <DataGridTextColumn Header="Age" Binding="{Binding Age}" Width="*" /> 
     </DataGrid.Columns> 
    </DataGrid> 

2)

public ObservableCollection<gridDataModel> GridCollection { get; set; } 

3)初始集合之前定義的視圖模型您的收藏或代碼隱藏使用

public MainWindow() 
{ 
    InitializeComponent(); 
    DataContext = this; 
    GridCollection = new ObservableCollection<gridDataModel>(); 
} 

4)畢竟,你會得到這一點,你可以通過GUI添加電網項目,他們將在收集result

+0

它運行良好,但我仍然可以添加行。當載入表單時,它會出現一行,我可以插入數據,但是按下回車鍵,發送給我這個錯誤: ** PresentationFramework.dll中類型爲「System.InvalidOperationException」的未處理異常 注意:雙向鏈接需要Path或XPath。** 感謝您的時間,@galakt – Richard

+0

@Richard您的數據模型如何看起來如何?因爲在我的解決方案中輸入和標籤工作正確 – galakt

+0

在jiffy我編輯問題向你展示。 – Richard

-1

必須定義的ItemsSource。

在後面的代碼:

List<YourObj> list = new List<YourObj>(); 
dtgPersons.ItemsSource = list; 
+0

我試過,但沒有奏效存儲,我添加了一些空的對象,但對細胞不能編輯創建。 – Richard