App.xaml is part of the XAML Application class - the only centralized place where you define the logic and resources of the application. So far, Generic.xaml , being in the Themes directory of your project, is a dictionary in which you define default styles for all your custom controls. This dictionary is used if there is no Windows-specific dictionary in Themes folder. For example, you might have the following Themes directory structure:
MyProject - Themes - Generic.xaml // Default styles if current theme is non of the themes below - Classic.xaml // Styles for "Classic" Windows 9x/2000 look on Windows XP. - Luna.NormalColor.xaml // Styles for default blue theme on Windows XP. - Luna.Homestead.xaml // Styles for olive theme on Windows XP. - Luna.Metallic.xaml // Styles for silver theme on Windows XP. - Royale.NormalColor.xaml // Styles for default theme on Windows XP Media Center Edition. - Aero.NormalColor.xaml // Styles for default theme on Windows Vista
If you want the user control to look the same on any Windows theme, you only need to create Generic.xaml.
So basically you should use Generic.xaml only to define the styles of your custom control and App.xaml for everything else (like your brushes, colors, etc. or your own styles for standard controls).
See also the answer to this question: What is so special about Generic.xaml?
source share