런타임까지 열이 무엇인지 알 수 없기 때문에 코드 뒤에 열을 추가해야하는 DataGrid가 있습니다. ResultsGrid는 DataGrid입니다.데이터가 업데이트되지 않는 데이터 바인딩 문제
ResultsGrid.Columns.Add(new DataGridTextColumn()
{
Header = columnName,
Binding = new Binding("results[" + columnName + "]"),
CanUserSort = true,
Visibility = buildingFieldList.Single(x => x.FieldName == columnName).Visibility
});
buildingFieldList에는 사용할 모든 열의 목록이 있습니다. 내 사용자 정의 유형 DBField의 객체를 포함하는 ObservableCollection입니다. 나는 irrelivant 물건을 제거하고 클래스 아래에 붙여 넣은 :
public class DBField : INotifyPropertyChanged
{
private bool _Enabled;
private Visibility _Visibility;
public bool Enabled
{
get { return _Enabled; }
set
{
_Enabled = value;
if (_Enabled)
_Visibility = System.Windows.Visibility.Visible;
else
_Visibility = System.Windows.Visibility.Collapsed;
OnPropertyChanged("Visibility");
OnPropertyChanged("Enabled");
}
}
public Visibility Visibility
{
get { return _Visibility; }
set
{
_Visibility = value;
if (_Visibility == System.Windows.Visibility.Visible)
_Enabled = true;
else
_Enabled = false;
OnPropertyChanged("Enabled");
OnPropertyChanged("Visibility");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
내가 클릭하면 enabled 속성을 수정하고 같은도 _Visibility을 수정하고 OnPropertyChanged를 호출하는 체크 박스가 있습니다. 앞으로 일어날 것으로 예상되는 것은 열의 가시성이 무너 졌기 때문입니다. 그러나 그것은 변화하지 않습니다. 어떤 아이디어?
설명해 주시겠습니까? 나는 그 일을하려했지만 어떻게 할 수 없었는지 알아 냈다. – Justin