+4  A: 

"Where is this panel going to exist in the ListBox?" - The listbox will make one copy of it for each list item, i.e. one for each element in the myTodoList collection. So within each list item, you'll have the three labels stacked one above the other.

"What is its purpose in the ItemTemplate?" - To make it possible to show more than one control for each element in the ItemsSource. ItemTemplate, like many things in WPF, can only take one child element, so if you want multiple children, you need to specify how you want them laid out, and you do that by adding a panel (StackPanel in this case).

"Can any System.Windows.Controls.Panel be used in its place, specifically a Grid?" - You bet.

"How would I go about using a <Grid> element as the template for each item in the ListBox?" - The same way you would use a Grid anywhere else. It's no different; it's just that ItemsControl (and its descendant, ListBox) will create multiple instances of your Grid. Note, though, that inside the ItemTemplate, your DataContext will be the current list item, and therefore your {Binding}s will be relative to that list item (unless you specify otherwise with e.g. ElementName).

"Does this look correct?" - This really should be posted as a separate question, as it's unrelated to the questions about the MSDN sample, and I'm not even sure what you're trying to do. But I'll try to answer: I suspect something is wrong, because you're using the name "GraphLabelYData" two different ways. In the ColumnDefinition, as far as I can tell, you're treating GraphLabelYData as the name of a XAML element (i.e. you're looking for another control in the window/page/UserControl with Name="GraphLabelYData" or x:Name="GraphLabelYData", and reading that control's GraphLabelMarkerLength property); but in the TextBlock, you're treating GraphLabelYData as the name of a property on the current collection item. I suspect one of those isn't right.

Joe White
Thanks a lot! I knew there was at least one person who would put up with all of those questions. I like to think the last question was related - though perhaps not so clearly. I was concerned about the usage of a panel element in a template. And I had no idea if I was using the Grid for the same reason as the StackPanel was used in the sample, or if it was even doing the same thing. As for the bindings, you bring up an interesting point.
Giffyguy
However, I'm confused because I'm not using GraphLabelYData in the TextBox. I'm using GraphLabelTag which IS a property of the current collection item (GraphLabelYData is the collection in question, with a couple of custom properties of my creation, such as GraphLabelMarkerLength).
Giffyguy
Now this IS getting off track a bit - I wasn't planning on asking questions about the data-bindings ... You got me there, haha. Are you willing to help me with the bindings if I explain them a bit more fully?
Giffyguy
I'm thinking that it's entirely possible that I'm not using data contexts correctly at all. My next question would be: What is the default data context for the binding in the ColumnDefinition?
Giffyguy
You're right, I got the usages of GraphLabelYData mixed up. I'm still not sure the ElementName thing is right, though it could be that you're just doing something I haven't learned about yet. As for the databinding, if you're having trouble, SO is a good place to post your question. (It helps to be focused and specific, though.)
Joe White
Your comments have helped me out quite a bit. I now have the axis labels showing up on the screen, thanks to you. If you feel like submitting another answer regarding the bindings, I'd gladly give you another up-vote.
Giffyguy