The problem was an issue with parent-child relationships.
Initially I had a ScrollViewer(SV) and a main Canvas(MC).
The problem was that the MC was being added as a child of other container's even though MC was set as the Content of the SV.
The solution was to reparent SV in a 3rd Canvas(3C) making the hierarchy [parent -> child]:
3C -> SV -> MC
The width and heights could then be applied to 3C & SV, leaving MC to autosize according to it's contents.
As MC gets larger than SV & 3C, it allows scrolling.
All children are added to MC exclusively