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