0
我正在一個WPF項目,我有一個DataGrid綁定到一個ObservableCollection。值正在被正確界定,但我遇到的問題是我無法編輯具有雙值的列。它不會讓我在細胞中插入一段時間。WPF:UpdateSourceTrigger = PropertyChanged問題與雙值
這是我的XAML:
<DataGrid Name="dataGrid" AutoGenerateColumns="False"
CanUserResizeColumns="True" CanUserAddRows="False" CanUserSortColumns="True" ItemsSource="{Binding}"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"
ColumnWidth="*" Margin="0,51,186,58"
RowEditEnding="dataGrid_RowEditEnding">
<DataGrid.Columns>
<DataGridTextColumn Header="Field 1" Binding="{Binding Field1, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="Field 2" Binding="{Binding Field2, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="Field 3" Binding="{Binding Field3, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="Field 4" Binding="{Binding Field4, UpdateSourceTrigger=PropertyChanged}" />
<DataGridCheckBoxColumn Header="Field 5" Binding="{Binding Field5, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="Field 6" Binding="{Binding Field6, UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>
<DataGrid>
這裏是類(對不起,我奇怪的類屬性:/我做它的目的是這樣)
class FieldClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private int _field1;
public int Field1
{
get { return _field1; }
set
{
_field1 = value;
OnPropertyChanged("Field1");
}
}
private int _field2;
public int Field2
{
get { return _field2; }
set
{
_field2 = value;
OnPropertyChanged("Field2");
}
}
private double _field3;
public double Field3
{
get { return _field3; }
set
{
_field3 = value;
OnPropertyChanged("Field3");
}
}
private double _field4;
public double Field4
{
get { return _field4; }
set
{
_field4 = value;
OnPropertyChanged("Field4");
}
}
private bool _field5;
public bool Field5
{
get { return _field5; }
set
{
_field5 = value;
OnPropertyChanged("Field5");
}
}
private double _field6;
public double Field6
{
get { return _field6; }
set
{
_field6 = value;
OnPropertyChanged("Field6");
}
}
public FieldClass()
{
_field1 = 0;
_field2 = 0;
_field3 = 0.0;
_field4 = 0.0;
_field5 = false;
_field6 = 0.0;
}
// Create the OnPropertyChanged method to raise the event
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
如何如果我想更新列的值(可以說我想更新Field3或任何有雙精度的字段),我可以在DataGrid上創建它,我可以插入一個類似2.1的double值嗎?
是否需要數據模板?不知道如何去做,仍然是初學者。
感謝您的幫助!
-1您的問題沒有被您的代碼展示。無論UpdateSourceTrigger值如何,我都可以輸入帶小數點的值而不會出現問題。 – Sheridan 2014-10-02 14:39:19
對不起@Sheridan,我希望每個UpdateSourceTrigger都是「PropertyChanged」。出於測試目的,我將Field3設置爲LostFocus。但它不是我想要做的。如果再將PropertyChanged添加到UpdateSourceTrigger中再次運行它,它不應該更新這次。 – 2014-10-02 14:50:14
超前你的方式......我已經這麼做了...這就是爲什麼我的評論說*無論UpdateSourceTrigger值如何。你必須有其他的東西干擾它。在一個新項目中嘗試你的代碼,你會發現它工作得很好。 – Sheridan 2014-10-02 15:06:14