1.对于一个Typical WPF application,MSBuild会自动帮我们管理XAML file和Reource.
*.csproj file:
ApplicationDefinition Include=”App.xaml” />
<Compile Include=”App.xaml.cs”>
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
然后MSBuild会自动创建WPF Application.
App.g.cs:
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public static void Main() {
WindowsApplication1.App app = new WindowsApplication1.App();
app.InitializeComponent();
app.Run();
}
2.当WPF host在一个Managed application 或者UnManaged,比如Windows Form/MFC。那么我们需要自己创建
WPF Application Instance,并且添加Resource in Code.
public Page1()
{
EnsureApplicationResources();
InitializeComponent();
}
public static void EnsureApplicationResources()
{
if (System.Windows.Application.Current == null)
{
// create the Application object
new System.Windows.Application();
System.Windows.Application.Current.ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown;
// merge in your application resources
System.Windows.Application.Current.Resources.MergedDictionaries.Add(
System.Windows.Application.LoadComponent(
new Uri("DNVS.NMCP.CrankShaftFatigue.Win;component/CrankShaftFatigueResources.xaml",
UriKind.Relative)) as System.Windows.ResourceDictionary);
}
}
Resoure File Sample:
<!--
This resource dictionary is used by the MainWindow.
-->
<ResourceDictionary
xmlns:CommonMVVM="clr-namespace:DNVS.NMCP.Common.MVVM;assembly=DNVS.NMCP.Common.MVVM"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vw="clr-namespace:DNVS.NMCP.CrankShaftFatigue.Win"
xmlns:toolkit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
>
<Style TargetType="{ x:Type CommonMVVM:NumberTextBox}">
<Style.Triggers>
<Trigger Property="IsReadOnly" Value="True">
<Setter Property="Background" Value="LightYellow"/>