У меня есть таблица данных, к которой мне нужно добавить столбцы в коде, потому что я не знаю, какими будут столбцы до времени выполнения.ResultsGrid - это сетка данных.
ResultsGrid.Columns.Add(new DataGridTextColumn()
{
Header = columnName,
Binding = new Binding("results[" + columnName + "]"),
CanUserSort = true,
Visibility = buildingFieldList.Single(x => x.FieldName == columnName).Visibility
});
buildingFieldList содержит списки всех столбцов, которые будут использоваться.Это ObservableCollection, которая содержит объекты моего пользовательского типа DBField.Я удалил ненужные вещи и вставил следующий класс:
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.Что я ожидаю, так это то, что колонка видимости свернута.Тем не менее, это не меняется.Есть идеи почему?