2017-05-04 194 views
-1

我试图将文件保存到设备。问题是我从代码隐藏硬编码文件名。Xamarin Forms Xamarin Android

enter image description here

我的要求是要求用户保存文件用户自定义名称的文件。我该如何让用户通过在Xamarin Forms中打开filesavedialog来保存文件?

+0

你有什么已经尝试过? – Mazz

+0

实际上,我生成一个pdf和即时通信使用ISave接口与依赖项服务保存文件,但我的要求是用用户定义的文件名保存文件,就像它应该打开一个保存对话框并从设备访问文件夹。 – Rohan

+0

https ://googleweblight.com/i?u = https://msdn.microsoft.com/en-us/library/windows/desktop/ms646960(v%3Dvs.85).aspx&grqid = _aSRcGLW&hl = zh-cn – Rohan

回答

0

你必须自己实现文件选择器,没有内置的方法来做到这一点,最好出去GitHub,并看看如果这就是你以后的事情。

这听起来像你可以很容易地实现你刚刚弹出一个文本框,让用户输入文件名,使用正则表达式或其他东西验证文件名,然后用该文件保存文件名字,你甚至可以保存文件,并给他们重新命名文件的选项,但是这对我来说太广泛了,无法给你一个确切的实现,所以我能为你做的最好的是告诉你简单的方法来做你想做的事情。

0

选择文件后,您只需使用“Entry”打开Popup并使用Entry Text保存文件。你可以使用“Rg.Plugins.Popup

2

打开弹出窗口你已经解决了吗?你可以发布你的解决方案吗?
这个问题可能会满足您的需求,它使用这个插件:Xam.plugin.filepickerXam.Plugin.FilePicker Works fine but can't get file

下面是使用Rg.Plugins.Popup
CS最简单的弹出页面:

public partial class PromptPopup : PopupPage 
{ 
    public event EventHandler Oked; 
    public event EventHandler Canceled; 
    public PromptPopup(string title, string text) 
    { 
     InitializeComponent(); 
     PopupText.Text = text; 
     PopupTitle.Text = title; 
    } 

    private void OnCancel(object sender, EventArgs e) 
    { 
     this.Canceled(sender, e); 
     PopupNavigation.PopAsync(false); 
    } 
    private void OnOk(object sender, EventArgs e) 
    { 
     this.Oked(sender, e); 
     PopupNavigation.PopAsync(false); 
    } 
} 

其XAML:

<StackLayout VerticalOptions="Center" HorizontalOptions="FillAndExpand" Padding="20, 20, 20, 20"> 
<StackLayout BackgroundColor="White" Padding="10, 10, 10, 10"> 
    <Label x:Name="PopupTitle" Text="PromptPopupTitle" TextColor="Gray" FontSize="20" HorizontalOptions="Center" /> 
    <ScrollView> 
    <StackLayout> 
     <StackLayout Orientation="Horizontal"> 
     <Label x:Name="PopupText" 
       HorizontalOptions="FillAndExpand" 
       HorizontalTextAlignment="Center" 
       TextColor="Gray"></Label> 
     </StackLayout> 
     <StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand"> 
     <Button Text="{i18n:Translate PopupButtonCancel}" Clicked="OnCancel" HorizontalOptions="FillAndExpand"></Button> 
     <Button Text="{i18n:Translate PopupButtonOk}" Clicked="OnOk" HorizontalOptions="FillAndExpand"></Button> 
     </StackLayout> 
    </StackLayout> 
    </ScrollView> 
</StackLayout> 

(此页来自一个PopupPage而不是ContentPage)

,你可以这样调用

var page = new PromptPopup("title", "text"); 
page.Oked += Page_OkedLogout; 
page.Canceled += Page_CanceledLogout; 
await PopupNavigation.PushAsync(page); 

进一步深入支持:https://github.com/rotorgames/Rg.Plugins.Popup