當我使用DataGrid的,因爲我需要添加新行的數據進行編輯,所以,我必須讓如何禁止WPF DataGrid的Click事件做一個新的行
CanUserAddRows="True" .
,但我發現,當我點擊另一個單元格,dataGrid會建立一個新的Line,並且我不知道如何禁止這個事件。我發現因爲我綁定了「float」或「int」數據,單元格會填滿單元格「0」,我能做些什麼來讓它成爲沒有「0」的空間來充滿它。所以任何人都可以給我一些建議,謝謝。
當我使用DataGrid的,因爲我需要添加新行的數據進行編輯,所以,我必須讓如何禁止WPF DataGrid的Click事件做一個新的行
CanUserAddRows="True" .
,但我發現,當我點擊另一個單元格,dataGrid會建立一個新的Line,並且我不知道如何禁止這個事件。我發現因爲我綁定了「float」或「int」數據,單元格會填滿單元格「0」,我能做些什麼來讓它成爲沒有「0」的空間來充滿它。所以任何人都可以給我一些建議,謝謝。
您應該將DataGridTextColumn的綁定設置爲類型爲int?
的屬性,而不是int
。換句話說,考慮你有兩個屬性,類型爲int的一方和另一方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));
}
}
你可以看到下面的DataGrid中的區別:
<DataGrid ItemsSource="{Binding Models}" DataContext="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Index}"/>
<DataGridTextColumn Binding="{Binding IndexNullable}"/>
</DataGrid.Columns>
</DataGrid>
同樣,如果你使用的是float,把它改爲可空:''float?'' – Ron
我非常感謝你的詳細program.but我不熟悉MVVM,我只是使用簡單的職員類,'公衆班員工 { public int ID {get;組; } public string Name {get;組; } public float Test_Score {get;組; } public float [] G = new float [100]; }',並使用observableCollection
和我只是改變我的程序,就像'公衆流動? Test_Score {get;組; }',程序會報錯 –
爲什麼你不能簡單地將CanUserAddRows屬性設置爲false,如果你想防止出現新行?或者你打算如何顯示添加行? – mm8
因爲我需要添加新行,這個頁面是爲了添加新行而不顯示數據。所以我不能讓CanUserAddRows爲假 –