c#访问器未被引用调用
本文关键字:引用 调用 访问 | 更新日期: 2023-09-27 18:08:11
我的问题如下。我有一个类的属性:
public partial class GraphView : UserControl
{
private ObservableChartDictionary _dictionary;
public ObservableChartDictionary dictionary
{
get
{
return _dictionary;
}
set
{
this._dictionary = value;
this.signals = ChartConverter(value);
}
}
}
我稍后使这个属性等于另一个对象。
myGraphView.dictionary = this.dictionary;
当我这样做时,属性的setter会很好地运行。这也意味着
this.signals = ChartConverter(value);
执行。如果我改变引用的对象,"this。该值出现在"myGraphView"中。Dictionary ",但setter不会执行,转换也不会发生。
我该如何解决这个问题?我的类ObservableChartDictionary也实现INotifyPropertyChanged,但事件没有在"myGraphView"中引发。字典"。请帮助!
这可能是因为您正在以某种方式更改字典,例如
this.dictionary.someproperty ... or this.dictionary.someMethod(...)
这样setter属性不会被触发。它只是改变了你的字典的内容,而对它的其他引用看到了这些变化。
。Dictionary =某事触发set属性
如果您想检测更改,这段代码可能会有所帮助:
public class ObservableChartDictionary<TKey, TValue> : Dictionary<TKey, TValue>, INotifyPropertyChanged
{
public void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public TValue this[TKey key]
{
get { return this[key]; }
set
{
base[key]= value;
OnPropertyChanged(key.ToString());
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
observableDictionary只适用于graphView,对吧?如果你想连接它们,为什么不直接将ObservableChartDictionary实例链接到一个实际的图视图。
public class ObservableChartDictionary
{
public GraphView linkedGraph { get; set; }
public ObservableChartDictionary(GraphView linkedGraph)
{
this.linkedGraph = linkedGraph;
}
//...
}
则可以在字典更改时(例如,属性通知更改)从字典本身更新值:
if (linkedGraph != null)
{
linkedGraph .signals = ChartConverter(this);
}
所以每次你添加一个条目或改变一些东西时,它都会更新图。
你甚至可以创建一个嵌套类来显示它们是紧密连接的