using CodeDom to create XAML windows

  • Thread starter Thread starter moondaddy
  • Start date Start date
M

moondaddy

will CodeDom create XAML windows or just regular windows forms?

If so, how to I tell it to create a xaml window instead of a windows form?

thanks
 
moondaddy said:
will CodeDom create XAML windows or just regular windows forms?

If so, how to I tell it to create a xaml window instead of a windows form?

Just change which type it's creating - can you give us a sample of your
current CodeDom code?

There's no such thing as a XAML window really - just the new WPF
classes, which often happen to be loaded using XAML.
 
I don't have any codedom code yet. I'm just trying to figure out where to
start. I rolled my own code-gen tool which writes the data access and
business classes, and now I'm attacking the UI tier and wanted to use WPF
windows. I found a codedom sample at:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxsamples/local/sampleexecutables/Applications/CodeDOMSample.zip

which seemed to be way more complicated than it should be. If I cant find
any clean samples using codedom to create WPF classes, then I will probable
add the initial class via VS to the project (someWindow.xaml) and generate
the xaml and cs code behind with my tool and just paste it in.

Actually, all I need to do is create 'someWindow.xaml' via codedom so that
all the hidden classes are created for me, then my tool can overwrite the
someWindow.xaml and someWindow.cs files with my custom code.
 
OK here's my sample code. I dont see where or how to change the type to a
xaml window object.


static void Main(string[] args)
{

CodeCompileUnit compileUnit = new CodeCompileUnit();
CodeNamespace ns = new CodeNamespace("WarpCode");
compileUnit.Namespaces.Add(ns);
GenerateCSharpCode(compileUnit);
}

public static String GenerateCSharpCode(CodeCompileUnit compileunit)
{
// Generate the code with the C# code provider.
CSharpCodeProvider provider = new CSharpCodeProvider();

// Build the output file name.
string path =
@"D:\nwis\Apps\ConsoleApplication3\ConsoleApplication3\tmpCode\";
String sourceFile;
if (provider.FileExtension[0] == '.')
{
sourceFile = "HelloWorld" + provider.FileExtension;
}
else
{
sourceFile = "HelloWorld." + provider.FileExtension;
}

provider.GetTypeOutput

// Create a TextWriter to a StreamWriter to the output file.
IndentedTextWriter tw = new IndentedTextWriter(
new StreamWriter(path + sourceFile, false), " ");

// Generate source code using the code provider.
provider.GenerateCodeFromCompileUnit(compileunit, tw,
new CodeGeneratorOptions());

// Close the output file.
tw.Close();

return sourceFile;
}
 
moondaddy said:
OK here's my sample code. I dont see where or how to change the type to a
xaml window object.

Again, there's no such thing as a "xaml window object". If your sample
code compiled and produced a WinForms application, it would be easier
to show the equivalent using a WPF window - but as it is, there's
nothing significant in there to change.
 
Hi,

Code Document Object Model(CodeDOM) enables developers of programs that
emit source code to generate source code in multiple programming languages
at run time, based on a single model that represents the code to render.

We could use CodeDOM to generate the source code behind the UI tier, as you
have done. But as for a WPF window, since it is made up of XML without any
source code, we should not generate its content using CodeDOM. To geneate
an XML file, we could use System.Xml.XMLWriter class.

Note that you should save the XML file as *. xaml.

For more information on how to create XML writers, you may visit the
following link.

'Creating XML Writers'
http://msdn2.microsoft.com/en-us/library/kkz7cs0d.aspx

Hope this helps.
If you have anything unclear, please feel free to let me know.

Sincerely,
Linda Liu
Microsoft Online Community Support

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
Back
Top