2017-03-06 4 views
0

新しい行を作成するイベントをクリックして、そう、私は私はデータグリッドを使用すると、私はデータを編集するための新しい行を追加する必要があるため、

CanUserAddRows="True" . 

をさせなければなりませんが、私はとき、ことがわかりました私は他のセルをクリックし、DataGridは新しいLineを構築し、イベントを禁止する方法はわかりません。私は "float"または "int"データをバインドするので、セルはセルでいっぱいになります"0"、それは誰も私にいくつかのアドバイスを与えることができる完全なit.soに "0"なしでスペースにすることができます、ありがとう。 enter image description here

+0

:つまり、あなたは次のDataGridの違いを見ることができますが、二つの特性、int型の1および他のint型でモデルを持っている場合?:

public class Model : INotifyPropertyChanged { int? _indexNullable; public int? IndexNullable { get { return _indexNullable; } set { _indexNullable = value; RaisePropertyChanged("IndexNullable"); } } int _index; public int Index { get { return _index; } set { _index = value; RaisePropertyChanged("Index"); } } public event PropertyChangedEventHandler PropertyChanged; internal void RaisePropertyChanged(string propname) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propname)); } } 

を考えますなぜ新しい行が表示されないようにするには、CanUserAddRowsプロパティをfalseに設定するだけですか?または、追加行を表示する方法は? – mm8

+0

新しい行を追加する必要があるので、このページはdata.soを表示しないように新しい行を追加するためのものです。CanUserAddRowsをfalseにすることはできません。 –

答えて

0

intではなく、int?のプロパティにDataGridTextColumnのバインディングを設定する必要があります。

<DataGrid ItemsSource="{Binding Models}" DataContext="{Binding}" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Index}"/> 
     <DataGridTextColumn Binding="{Binding IndexNullable}"/> 
    </DataGrid.Columns> 
</DataGrid> 
+0

同様に、 '' float''を使用している場合は、 Nullable: '' float? '' – Ron

+0

詳細なプログラムについては非常に感謝しています。私はMVVMに慣れていません。単純なStaffクラスを使用しています。' public class Staff { public int ID {get;セット; } public string Name {get;セット; } public float Test_Score {get;}セット; } public float [] G =新しいfloat [100]; } 'に変更し、observableCollection を使用してください。そのため、私は大きな変更を加えるのが少し難しいです。 –

+0

と私はそのような '公共のフロートのような私のプログラムを変更するだけですか? Test_Score {get;セット; } '、プログラムはエラーを報告します –

関連する問題