Вот решение для WPF
Мэтью показал мне, как это сделать в Windows Forms приложения, и я исследовал немного и найдено решение для wpf.
Вот шаг за шагом я сделал ..
Сначала я добавил пустую Основную функцию в App.xaml.cs
public partial class App : Application
{
[STAThread]
public static void Main()
{
}
}
При составлении он показал ошибку, говорящую нескольких точек входа для приложения. При двойном щелчке он перемещается в файл App.g.cs, где существует фактическая точка входа.
public partial class App : System.Windows.Application {
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
#line 4 "..\..\App.xaml"
this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
#line default
#line hidden
}
/// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public static void Main() {
FileOpen.App app = new FileOpen.App();
app.InitializeComponent();
app.Run();
}
}
.
Теперь я удалил все строки и скопировал точку входа в приложение.xaml.cs А также удалены StartupUri от App.xaml
<Application x:Class="FileOpen.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Application.Resources>
</Application.Resources>
Теперь App.g.cs
public partial class App : System.Windows.Application {
/// <summary>
/// Application Entry Point.
}
И в App.xaml.cs
public partial class App : Application
{
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public static void Main(string[] args)
{
MainWindow window = new MainWindow(args != null && args.Length > 0 ? args[0] : "");
window.ShowDialog();
}
}
И MainWindow
public partial class MainWindow : Window
{
public MainWindow(string filePath)
{
InitializeComponent();
if (filePath != "")
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
using (var sr = new StreamReader(fs)) txt.Text = sr.ReadToEnd();
}
}
просто в сторону, вы можете использовать 'using' блоки, а не вручную закрыть' FileStream 'и' StreamReader'. Это неважно, но это хорошая привычка. –
Настройка в качестве приложения по умолчанию требует внесения изменений в реестр, что может потребовать повышенных прав. – pushpraj
Проверить http://stackoverflow.com/questions/2681878/associate-file-extension-with-application – NoChance