Yes, I proposed this solution based on the fact that there are two bar series in the image you attached.
If you have more than 2 series, the Width=20 work-around will not work. I will explain why. The categorical axis divides the available space equally amongst all categories. In a single category slot, each bar gets the same space. It is important to understand that the axis does not ask the bars how wide they are, instead it specifies where a bar should be positioned.
With the previous work-around, where we set the width of the Rectangle, it only appeared as if the bar was 20 pixels wide. In reality, the bar, which is presented by a ContentPresenter was much larger, but the visible part of it, namely the Rectangle, was smaller.
So, now you see that Width work-around and more than 2 series do not mix. I suggest you simply do not force the bars to have a certain width, because in the general case it would not look good - if you have a fre items, the distance between the bars will be huge and the chart will look empty. If you have many items, the bars will begin to overlap.
An alternative is to try set the GapLength property of the axis. However, the GapLength is in relative measures, from 0 to 1, and if you demand keeping the bars 20 pixels wide, you will need to make some non-trivial calculations based on the size of the plot area and number of categories in the axis.