I’d start by laying out the controls on the three forms (or windows or user controls, or pages, or whatever your platform uses) without binding.
The navigation on the back from the Find Recipe form to the main window is data-dependent, but you can build the functionality to open the two subsidiary windows modally fairly simply.
Yes, I know that Visual Studio makes it easy to do form layout and binding at the same time with its RAD tools, but I’m not a fan. But you’re building this system, so do what you think best.
Only once the basic binding structure is in place would I start implementing the commanding that’s the heart of the system.
On Your Own
The commanding is, of course, the heart of the client functionality. Here’s what you’ll need to do at a minimum:
• Implement CRUD functionality through the Edit menu. The UI sketch doesn’t show it, but presumably recipes will be added via the same screen used to edit them. (In my experience, oversights like that tend to be fairly common at this stage, and you can’t always go back to the client for clarification, so you have to do what seems reasonable to you.)
• Implement navigation through the data set in the main window. This is a little trickier than it might appear, because you’ll need to decide when and how you’ll load the data into memory, and of course that has implications for the rest of the system (particularly the search function).
• Implement the search functionality. Because the UI sketch is a little vague, you’ll need to make some decisions about how this is going to work. Can the options be combined? (That is, can someone search for the recipe they got from Aunt Jen that uses rhutabagas?) Or can they only search for Aunt Jen’s recipes? You’ll also need to build the functionality to display the selected recipe on the main window once the user has found it.