A WPF component making it easy to show the corresponding XAML for WPF custom styles and controls. It was built out of a need to shows the XAML for the theme library MaterialDesignInXamlToolkit. You can see it working in the demo application for MaterialDesignInXamlToolkit.
- Install the MSBuild package.
PM> Install-Package ShowMeTheXAML.MSBuildThis will also install theShowMeTheXAMLpackage as well. - Add the following code in your
App.xaml.cs
protected override void OnStartup(StartupEventArgs e)
{
XamlDisplay.Init(
// optional list of assemblies to look for ShowMeTheXAML data from.
// Automatically tries to load data from Assembly.GetEntryAssembly()
);
base.OnStartup(e);
}XamlDisplay.Init() does not work under Native AOT. For Native AOT support, invoke XamlDictionary.Init() from your App.xaml.cs:
protected override void OnStartup(StartupEventArgs e)
{
XamlDictionary.Init();
base.OnStartup(e);
}Note: the difference between XamlDisplay.Init() and XamlDictionary.Init() is that XamlDictionary.Init() will look for XamlDictionary from Assembly.GetEntryAssembly() and from the list of Assembly instances provided to XamlDisplay.Init(). XamlDictionary.Init() does not. As such, if multiple assemblies contain XamlDictionary types, new public APIs will need to be added to each such assembly and explicitly invoked in order for the XamlDictionary data to be used.
- (Optional) The default template is pretty basic. For a better looking style add the ShowMeTheXAML.AvalonEdit package.
PM> Install-Package ShowMeTheXAML.AvalonEditIn App.xaml include the resource dictionary.
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/ShowMeTheXAML.AvalonEdit;component/Themes/xamldisplayer.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources><smtx:XamlDisplay Key="SomeUniqueString">
<StackPanel>
<Button Content="Some Content" />
<TextBlock Text="Text" />
</StackPanel>
</smtx:XamlDisplay>