sto ottenendo un errore:SaveFileDialog di Silverlight sta dando errore "dialogo deve essere avviato dall'utente"
Dialog must be user-initiated
quando sto aprendo la finestra di savefile dal mio silverlight applicaiton Sto usando sottostante Codice
principale Button evento click:
private void btnSaveAttach_Click(object sender, RoutedEventArgs e)
{
if (EditableGV.SelectedItems.Count == 1)
{
PositionAttachment posAtt = new PositionAttachment();
posAtt = (PositionAttachment)EditableGV.SelectedItems[0];
SaveFile(posAtt.File, posAtt.FileName);
}
else
{
RadWindow.Alert("Please select a attachment from the existing attachments list.", null);
return;
}
}
private void SaveFile(byte[] fileByte, string fileName)
{
try
{
byte[] fileBytes = fileByte;//your bytes here
//Show the dialog
SaveFileDialog dialog2 = new SaveFileDialog();
saveDialog = dialog2.ShowDialog();//This line is giving the error
if (saveDialog == true)
{
//Get the file stream
dialog2.DefaultFileName = fileName;
string fileExt = fileName.Substring(fileName.LastIndexOf('.'), fileName.Length);
dialog2.DefaultExt = "All Files|*.*|" + fileExt + "|*." + fileExt + "";
using (Stream fs = (Stream)dialog2.OpenFile())
{
fs.Write(fileBytes, 0, fileBytes.Length);
fs.Close();
//File successfully saved
}
}
}
catch
{
MessageBox.Show("Error in downloading file");
}
}
Codice Xmal:
<StackPanel x:Name="Layout">
<StackPanel x:Name="Messagepanel" Margin="2" Visibility="Collapsed">
<TextBlock x:Name="txtMessage" Text="1" Height="35"></TextBlock>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="4">
<sdk:Label Height="28" Content="Select File:" Name="lblSelectFile" Grid.Column="0" Grid.Row="0" Width="70" />
<TextBox Name="txtFileName" IsReadOnly="True" HorizontalAlignment="Left" VerticalAlignment="Center" Width="303" Grid.Column="1" Margin="12,1,0,0"></TextBox>
<Button Content="Browse" Name="btnBrows" Width="55" Height="22" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="16,1,0,0" Click="btnBrows_Click" Grid.Column="1" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="4">
<sdk:Label Height="28" Content="Description:" Name="lblFileDescription" Grid.Column="0" Grid.Row="1" Width="70" />
<TextBox Height="60" Name="txtComments" Grid.Column="1"
VerticalScrollBarVisibility="Auto" Width="301" Margin="13,0,85,2" Grid.Row="1" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="4">
<Button x:Name="OKButton" Content="Add" Click="OKButton_Click" Width="43" Margin="363,6,10,15" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left" />
<Button x:Name="CancelButton" Content="Cancel" Click="CancelButton_Click" Width="53" HorizontalAlignment="Right" Margin="0,6,200,15" Grid.Row="2" Grid.Column="1" />
</StackPanel>
<StackPanel Orientation="Vertical" Margin="4" Height="224">
<sdk:Label Content="Existing Attachment(s):" Height="20" Margin="15,7,324,10" Name="lblExistingAttachemnt" />
<telerikGrid:RadGridView x:FieldModifier="public"
x:Name="EditableGV"
AutoGenerateColumns="False"
ItemsSource="{Binding PositionAttachemntCollection, Mode=TwoWay}" Margin="0,0,0,7" Height="150">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn DataMemberBinding="{Binding FileName,Mode=TwoWay}"></telerik:GridViewDataColumn>
<telerik:GridViewDataColumn DataMemberBinding="{Binding FileDescription,Mode=TwoWay}"></telerik:GridViewDataColumn>
<!--<telerik:GridViewColumn Header="" >
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadButton Name="btnDownlaod" Content="Save" Click="HyperlinkButton_Click"></telerik:RadButton>
<<HyperlinkButton Click="HyperlinkButton_Click" Content="{Binding FileName,Mode=OneWay}" TargetName="_blank" NavigateUri="http://www.google.com" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>-->
</telerik:RadGridView.Columns>
</telerikGrid:RadGridView>
<StackPanel Orientation="Horizontal" Margin="0">
<!--<Button Content="Save Attachment" Name="btnSaveAttach" Width="112" Margin="263,6,10,15" Click="btnSaveAttach_Click" />-->
<Button Content="Close" Name="btnClose" Width="75" Margin="3,6,10,15" Click="btnClose_Click" />
</StackPanel>
</StackPanel>
</StackPanel>
Questa funzione è chiamata su un pulsante di scatto. Mi sto chiedendo di avere un openFiledialog anche sulla stessa pagina ma sta aprendo la finestra di dialogo senza errori. perché quella finestra di dialogo savefile sta causando un errore.
riportano di seguito le tracce di stack dell'errore:
at System.Windows.Controls.SaveFileDialog.ShowDialogInternal(Window owner)
at System.Windows.Controls.SaveFileDialog.ShowDialog()
at IPVWorkbench.Views.AddPositionAttachments.btnSaveAttach_Click(Object sender, RoutedEventArgs e)
at System.Windows.Controls.Primitives.ButtonBase.OnClick()
at System.Windows.Controls.Button.OnClick()
at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName, UInt32 flags)
Quale codice si trova tra il clic del pulsante e questa chiamata? C'è un tempo minimo tra l'azione dell'utente e quando deve apparire la finestra di dialogo. Se superi questa volta otterrai questo errore. – ChrisF
Sto recuperando i dati del file e li ho archiviati in una variabile pubblica "fileByte" –
Da dove prelevano i dati? Sta usando una chiamata asincrona? – ChrisF