将文件扩展名与WPF应用程序相关联

我有一个很好的小任务组织者,我想添加一个备份选项。 但我不希望它在普通的xml文件或其他文件中,因为文件损坏的可能性。 那么如何创建程序知道的文件扩展名,并且可以使用.asog文件扩展名保存并打开?

试试这个:
Vista如何为与我的应用程序关联的文档生成图标?

接受的答案解释了图标文件关联。

您的应用使用WPF并不重要。 文件关联不关心您的应用程序使用的GUI框架。

如果要将带扩展名(.magi)的文件与WPF应用程序关联,我建议您使用InnoSetup来执行此操作。

例如,我开发了一个名为MAGI的Wpf应用程序。 我们将图标与“ .magi”文件相关联,当用户点击“ .magi”文件时,它会启动应用程序并直接在应用程序中打开它。

在Wpf应用程序中打开文件扩展名


使用InnoSetup轻松修改注册表

只需在您的iss文件中添加此instructino:

[Setup] ChangesAssociations=yes [Registry] Root: HKCR; Subkey: ".magi"; ValueType: string; ValueName: ""; ValueData: "MyMAGIApplication"; Flags: uninsdeletevalue Root: HKCR; Subkey: "MyMAGIApplication"; ValueType: string; ValueName: ""; ValueData: "Program MAGI"; Flags: uninsdeletekey Root: HKCR; Subkey: "MyMAGIApplication\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\MAGI.EXE,0" Root: HKCR; Subkey: "MyMAGIApplication\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\MAGI.EXE"" ""%1""" 

解析“Startup”方法中的参数

我们在主Xaml中使用Startup属性,以便像一个有用的main方法一样调用您的解析器。

   

在代码隐藏中我们添加了这个方法

 ///  /// Call with Startup property in App.xaml ///  ///  ///  private void AppStartupMainMAGI(object sender, StartupEventArgs e) { String[] arguments = Environment.GetCommandLineArgs(); if (arguments.GetLength(0) > 1) { if (arguments[1].EndsWith(".magi")) { string filePathFormMainArgs = arguments[1]; if(isFileMagiValid(filePathFormMainArgs)) { // Step 1 : deserialize filePathFormMainArgs // Step 2 : call the view "File oepn" in the application" } } } else { // Call the view "welcome page application" } } 

您可以使用安装项目或ClickOnce安装添加文件扩展名。 设置完成后,用户可以双击.asog文件,并使用文件名作为main参数数组中的第一个条目调用您的应用程序。