Hi,
I was not able to get the desired output.Below is the code used.
private void AssignSwimlanes()
{
string[] strSwimlaneProperties = new string[30];
diagDrawModel.EnableLanes = true;
diagDrawModel.LaneGrid.AllowResizeHeaders = true;
diagDrawModel.LaneGrid.AllowInplaceEdit = true;
diagDrawModel.LaneGrid.RowCount = swimlaneEntities.Keys.Count;
//swimlaneEntities is a dictionary holding ID,Name,Height,Width,X,y values of swimlanes
//Logic for same height swimlanes
//foreach (int iKey in swimlaneEntities.Keys)
//{
// strSwimlaneProperties = (string[])swimlaneEntities[iKey];
// if (strSwimlaneProperties[1].ToString() != "")
// {
// diagDrawModel.LaneGrid.RowHeaders.Add(new Header(strSwimlaneProperties[1].ToString()) { Width = Convert.ToInt32(strSwimlaneProperties[3].ToString()), Height = Convert.ToInt32(strSwimlaneProperties[2].ToString()) });
// }
// //foreach (ShapeNode shpNode in diagDrawModel.Nodes)
// //{
// // shpNode.LayoutTraits[SwimlaneLayoutTraits.Lane] = (int)(shpNode.Bounds.Y / Convert.ToInt32(strSwimlaneProperties[2].ToString()));
// //}
//}
//Logic for varying height swimlanes
foreach (int iKey in swimlaneEntities.Keys)
{
strSwimlaneProperties = (string[])swimlaneEntities[iKey];
if (strSwimlaneProperties[1].ToString() != "")
{
diagDrawModel.LaneGrid.RowHeaders.Add(new Header(strSwimlaneProperties[1].ToString()) { Width = Convert.ToInt32(strSwimlaneProperties[3].ToString()), Height = Convert.ToInt32(strSwimlaneProperties[2].ToString()) });
}
}
foreach (ShapeNode shpNode in diagDrawModel.Nodes)
{
Rect cellBounds = new Rect();
ICell cell = diagDrawModel.LaneGrid.GetCellFromPoint(shpNode.GetCenter(), ref cellBounds);
if (cell != null)
{
int index = diagDrawModel.LaneGrid.GetCellRow(cell);
foreach (int iKey1 in swimlaneEntities.Keys)
{
strSwimlaneProperties = (string[])swimlaneEntities[iKey1];
}
shpNode.LayoutTraits[SwimlaneLayoutTraits.Lane] = index;
}
}
swimlaneEntities.Clear();
}