public MyMatrix GetMatrix() { if (ans == null) { ans = GetMatrixInternal(); MatrixChanged?.Invoke(ans); } return(ans); }
void UpdateMatrix() { Matrix?matrix = null; if (_visual != null && _visual.VisualRoot != null) { matrix = _visual.TransformToVisual(_visual.VisualRoot); } if (Matrix != matrix) { Matrix = matrix; MatrixChanged?.Invoke(); } }
/// <summary> /// Indexer retrieves data from a square matrix at two indices. /// </summary> /// <param name="i"> Vertical node index. </param> /// <param name="j"> Horizontal node index </param> /// <returns></returns> public T this[int i, int j] { get { CheckIndex(i); CheckIndex(j); return(Data[i * Rank + j]); } set { CheckIndex(i); CheckIndex(j); if (!value.Equals(Data[i * Rank + j])) { MatrixChanged?.Invoke(i, j, Data[i * Rank + j], value); Data[i * Rank + j] = value; } } }
protected virtual void OnMatrixChanged(MatrixChangedEventArgs <T> e) { MatrixChanged?.Invoke(this, e); }
protected void OnMatrixChanged() { MatrixChanged?.Invoke(this, EventArgs.Empty); UpdateMatrix(); }
/// <summary> /// Method ReceiveEvent is shell for event MatrixChanged. /// </summary> /// <param name="firstIndex"> First index of node from square matrix. </param> /// <param name="secondIndex"> Second index of node from square matrix. </param> /// <param name="oldValue"> Value before change. </param> /// <param name="newValue"> New value. </param> protected virtual void ReceiveEvent(int firstIndex, int secondIndex, T oldValue, T newValue) { MatrixChanged?.Invoke(firstIndex, secondIndex, oldValue, newValue); }
protected void OnMatrixChanged(object sender, MatrixEventArgs e) { //Console.WriteLine("Changed!"); MatrixChanged?.Invoke(sender, e); }
public void OnMatrixChanged() => MatrixChanged?.Invoke(this, new EventArgs());