콤보 상자 열과 두 개의 텍스트 상자 열이있는 WPF DataGrid가 있습니다. 내 테스트의 경우 화면이로드 될 때 그리드가 바인딩되는 컬렉션의 행이 두 개 있습니다. 셀의 내용을 변경하면 제대로 업데이트됩니다. 그러나 새 행을 표에 추가하면 콤보 상자 열의 값을 업데이트 할 때 원본 컬렉션에서 업데이트되지 않습니다. 텍스트 상자 열은 새로 추가 된 행에 대해 제대로 작동합니다. 열은 같은 정의됩니다WPF DataGrid ComboBoxColumn 값을 삽입하지 않음
public ObservableCollection<PhoneNumber> PhoneNumbers
{
get
{
return _phoneNumbers;
}
set
{
if (value != _phoneNumbers)
{
_phoneNumbers = value;
OnPropertyChanged("PhoneNumbers");
}
}
}
업데이트 :
여기<DataGrid.Columns>
<DataGridComboBoxColumn Header="Type" Width="*" SelectedValueBinding="{Binding Mode=TwoWay, Path=Type.Id}"
ItemsSource="{Binding Source={StaticResource PhoneTypeList}, Path=PhoneTypes}"
SelectedValuePath="Id" DisplayMemberPath="Type" />
<DataGridTextColumn Binding="{Binding NotifyOnTargetUpdated=True, Path=Number, Mode=TwoWay, ValidatesOnExceptions=False}" Header="Number" Width="*"/>
<DataGridTextColumn Binding="{Binding NotifyOnSourceUpdated=True, Path=Extension, ValidatesOnExceptions=False}" Header="Extension" Width="*"/>
</DataGrid.Columns>
내 뷰 모델의 PHONENUMBERS의 속성입니다
public class PhoneNumber : INotifyPropertyChanged
{
private string _number;
private string _extension;
private PhoneType _type;
public PhoneType Type { get { return _type; }
set { _type = value; OnPropertyChanged("Type"); } }
public string Number
{
set
{
_number = value;
OnPropertyChanged("Number");
}
get { return _number; }
}
public string Extension
{
set
{
_extension = value;
OnPropertyChanged("Extension");
}
get { return _extension; }
}
public override string ToString()
{
return Number + (!string.IsNullOrEmpty(Extension) ? " x " + Extension : "");
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this,
new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
당신이 좋아? 나는이 바인딩 수정 작업을 얻을 수있는 전화 번호 클래스 – bendewey
보이지만, 기본 유형의 객체를 추가하는 문제를 해결 한 것으로 보인다 PhoneNumberType 무엇. 고마워. – drowned