So I have an application that is split into 2 parts – on the left there is a custom menu, on the right a grid that holds all the “content” (different screens).
It looks something like this:

Also, when the different buttons are hit, the menu on the left will fill up with different buttons (for example, if you hit the review button, the menu would become something along the lines):
Start Date
End Date
Employee
Project
...
I am pretty sure that I want each of the screens (to go on the right) to be their own user controls.
But my question is this: Should each of the menu’s be user controls? This makes it a little harder to use them. Then I have to worry about having getters/setters so the main window can listen on the menu’s buttons, etc.
The other option is to just programmatically add the buttons in the mainWindow, this way I can just add the listeners right in mainWindow.cs (into a grid)
Which is the better method? Or is there another method which is favoured?
The entire window can be done easily as a
Grid.The left side can just hold a
StackPanelor other layout control with your buttons.You can use a
ContentPresenterto hold the content on the right. When you trigger your buttons, just change the bound content, and it will update with your appropriate user controls.