申请文件下载 - 如何?
Application with document for download - How?
我有 WPF 应用程序,我希望用户在其中下载将包含在该应用程序中的特定文件。
在我的 .csproj 文件中,我有一个包含相关文件的 Files 文件夹,比如说 Benefits.docx 和 Visual Studios 的属性 window,我也设置了 Build Action = Content
和 Copy Always
设置。
在我的 XAML 中,我有一个供用户在本地下载文件的按钮:
<Button>
<Hyperlink NavigateUri="/Files/Benefits.docx">Download</Hyperlink>
</Button>
什么都没发生,我还缺少什么?查看 /bin 文件夹,我可以看到 /Files/Benefits.docx 在那里。
您似乎并不是真的要下载文件,而只是打开一个外部应用程序(如 Word)来显示属于您的应用程序一部分的文档。
您可以通过按钮或超链接执行此操作,但不能同时使用。
使用超链接看起来像这样:
<TextBlock>
<Hyperlink NavigateUri="Files/Benefits.docx"
RequestNavigate="Hyperlink_RequestNavigate">Open</Hyperlink>
</TextBlock>
请注意,NavigateUri 中没有前导 /
,这使其成为相对文件名。
RequestNavigate
事件处理程序如下所示:
using System.Diagnostics;
using System.IO;
...
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
var path = Path.GetFullPath(e.Uri.ToString());
Process.Start(path);
}
使用按钮而不是超链接可能如下所示,其中相关文件路径设置为按钮的 Tag
属性,以便在 Click 事件处理程序中可用。
<Button Content="Open" Click="Button_Click" Tag="Files/Test.docx"/>
Click 事件处理程序:
private void Button_Click(object sender, RoutedEventArgs e)
{
var button = (Button)sender;
var file = (string)button.Tag;
var path = Path.GetFullPath(file);
Process.Start(path);
}
我有 WPF 应用程序,我希望用户在其中下载将包含在该应用程序中的特定文件。
在我的 .csproj 文件中,我有一个包含相关文件的 Files 文件夹,比如说 Benefits.docx 和 Visual Studios 的属性 window,我也设置了 Build Action = Content
和 Copy Always
设置。
在我的 XAML 中,我有一个供用户在本地下载文件的按钮:
<Button>
<Hyperlink NavigateUri="/Files/Benefits.docx">Download</Hyperlink>
</Button>
什么都没发生,我还缺少什么?查看 /bin 文件夹,我可以看到 /Files/Benefits.docx 在那里。
您似乎并不是真的要下载文件,而只是打开一个外部应用程序(如 Word)来显示属于您的应用程序一部分的文档。
您可以通过按钮或超链接执行此操作,但不能同时使用。
使用超链接看起来像这样:
<TextBlock>
<Hyperlink NavigateUri="Files/Benefits.docx"
RequestNavigate="Hyperlink_RequestNavigate">Open</Hyperlink>
</TextBlock>
请注意,NavigateUri 中没有前导 /
,这使其成为相对文件名。
RequestNavigate
事件处理程序如下所示:
using System.Diagnostics;
using System.IO;
...
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
var path = Path.GetFullPath(e.Uri.ToString());
Process.Start(path);
}
使用按钮而不是超链接可能如下所示,其中相关文件路径设置为按钮的 Tag
属性,以便在 Click 事件处理程序中可用。
<Button Content="Open" Click="Button_Click" Tag="Files/Test.docx"/>
Click 事件处理程序:
private void Button_Click(object sender, RoutedEventArgs e)
{
var button = (Button)sender;
var file = (string)button.Tag;
var path = Path.GetFullPath(file);
Process.Start(path);
}