void MatrixHoveredCellChanged(object sender, HoveredCellEventArgs<Tuple<int, int>> e)
		{
			// need to add 1 to index, because first item in treeview is invisible root node
			if (e.HoveredCell.RowIndex < leftTree.Items.Count) {
				leftTree.SelectedItem = leftTree.Items[e.HoveredCell.RowIndex + 1];
			}
			if (e.HoveredCell.ColumnIndex < topTree.Items.Count) {
				topTree.SelectedItem = topTree.Items[e.HoveredCell.ColumnIndex + 1];
			}
			UpdateInfoText();
		}
		void OnHoverChanged(object sender ,HoveredCellEventArgs <Relationship> e)
		{
			if (e.HoveredCell.RowIndex < leftTree.Items.Count) {
				var leftNode = leftTree.Items[e.HoveredCell.RowIndex] as DependecyTreeNode;
				leftTree.SelectedItem = leftNode;
			}
			if (e.HoveredCell.ColumnIndex < topTree.Items.Count )
			{
				var topNode = topTree.Items[e.HoveredCell.ColumnIndex] as DependecyTreeNode;
				topTree.SelectedItem = topNode;
			}
		}