実行時まで列が何であるかわからないため、コードの背後に列を追加する必要があるデータグリッドがあります。 ResultsGridはデータグリッドです。データが更新されないデータバインディングの問題
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