데이터 행을 8 개로 구성했습니다. 특정 행이 비어있을 때 삭제 버튼을 클릭하면 "유형이 'MS.Internal.NamedObject'유형의 객체를 캐스팅 할 수 없습니다. 'pojo'를 입력하십시오. "DataGrid의 빈 행을 삭제할 수 없습니다. WPF
[! [...
public class pojo : INotifyPropertyChanged
{
private string prefix;
private int year;
public string Prefix
{
get { return prefix; }
set
{
if (prefix == value) return;
prefix = value;
OnPropertyChanged(nameof(PeriodName));
}
}
public int Year
{
get { return year; }
set
{
if (year == value) return;
year = value;
OnPropertyChanged(nameof(PeriodName));
}
}
public int QuarterNo { get; set; }
public int SerialNo { get; set; }
public string From { get; set; }
public string To { get; set; }
public string PeriodName => prefix + '-' + (year % 100).ToString();
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string prop)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
이 내 삭제 버튼 클릭 이벤트입니다 ...
private void Delete_Btn_Click(object sender, RoutedEventArgs e)
{
if (calendarmstrDG.SelectedItem != null)
{
models.Remove((pojo)calendarmstrDG.SelectedItem);
}
}
수있는 사람을 여기에 이미지 설명]
이 내 모델 클래스를 입력 .....
: 당신이 그것을보고 싶지 않으면, 다음
CanUserAddRows
False
에 설정합니다. 데이터가 없으면 왜 삭제 버튼으로 빈 행을 표시하고 삭제합니까? –그것은 타입 캐스팅과 관련이 있습니다. 당신은 행이 비어 있지만 당신은 'if (calendarmstrDG.SelectedItem! = null)'라고 써야한다. 그래서이 줄에서 오류가 발생했기 때문에 효과가 없다고 생각한다. 'models.Remove ((pojo) calendarmstrDG.SelectedItem); '마지막으로 calendarmstrDG.SelectedItem 유형이 pojo 유형과 같지 않으므로 코드를 다시 검사하여 다른 유형으로 캐스팅 할 수 없습니다. –
@AminSaadati이 datagrid 행은 사용자 입력 필드이므로 페이지가로드 될 때 datadrig가 자동으로 첫 번째 행을 활성화합니다 ... 행 셀에 무언가를 쓸 때 오류가 발생하지 않습니다. 빈 행 그것은 내가 위에서 언급 한 오류를 보여줍니다 .. – Markz