OK, I understood the basics of this one when I started, but just to help those newbies out (for instance, there have been a few messages like this on the MediaCenterSandbox), I'll go over the code/view seperation that you find in MCML.
There are two major components of any MCML application. These are the user interface elements (the .MCML files) and the code (the C# program).
In most ocmmon programming models, your code will directly reference the controls For example, you will set the text on the button called 'Button1' to say 'Hello' with the command "Button1.Caption='Hello';" or through messages like "SetDlgItemText(IDC_BUTTON1,'Hello');".
In MCML, the user interface and your code are kept seperate. You never directly reference any controls or user interface elements from your code.
Instead, MCML has access to the properties of your objects. So basically you choose what properties you want to show on your interface and hand them to your MCML page as properties.
Your MCML page is where your object is created. You can then access all of the public properties of the object and use them in your MCML file.
An example of passing a value from C# to MCML...
So in C#, you have a class like this
public class MyObject
//The underlying data
protected string _MyStringValue;
//The property to read in MCML
public String MyStringValue
And then if you want an MCML text object that uses the value...
<Text Name="MyData" Color="White"/>
<Binding Source="[Val.MyStringValue]" Target=[MyData.Content]"/>
This assumes you are importing your C#/.NET assembly with the namespace 'a' (this is the default when you create an MCML project in Visual Studio, so you shouldn't have to add this line to the first tag of your document).