Возврат текстового файла от нажатия кнопки WPF - PullRequest
0 голосов
/ 25 октября 2018

Я работаю над проектом, в котором мне нужно создать файл iCal, используя iCal.NET, с платформой WPF.Файл iCal должен быть создан на основе события нажатия кнопки.У меня есть пример кода ниже:

private void DownloadiCal_click(object sender, RoutedEventArgs e)
{
        var now = DateTime.Now;

        var later = now.AddHours(2);

        //Repeat Once a week
        var rrule = new RecurrencePattern(FrequencyType.Weekly, 1) { Count = 1 };

        //Creation of New Calendar Event

        var ce = new CalendarEvent 
        {
            Start = new CalDateTime(now),
            End = new CalDateTime(later),
            RecurrenceRules = new List<RecurrencePattern> { rrule },
        };


        //Update to include Calendar event to Calendar. 
        var calendar = new Ical.Net.Calendar(); 
        calendar.Events.Add(ce);

        var serializer = new CalendarSerializer();
        var serializedCalendar = serializer.SerializeToString(calendar);
        var bytesCalendar = Encoding.UTF8.GetBytes(serializedCalendar);

        return File(bytesCalendar, "text/calendar", "event.ics");
}

Однако, при нажатии кнопки файл не создается, я думаю, что он связан с возвращаемым файлом, однако, для документации, которую я в настоящее время искалЯ вижу примеры для ASP.NET, но не для WPF.Любая помощь будет принята с благодарностью.Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Ваш метод void, что означает, что вы не можете return значение из него.Точно так же File является статическим классом , что означает, что вы не можете создать его экземпляр.Я думаю, что вы в конечном итоге хотите, это File.WriteAllText(filePath, serialized)

var savePath = Path.Combine(@"C:\Path\to\parent\directory", "event.ics");
File.WriteAllText(savePath, serializedCalendar);
0 голосов
/ 25 октября 2018

Вы ничего не делаете с созданным вами файлом, вы просто отправляете его в пустоту, возвращая его в обработчик событий.Если вы хотите сохранить его на диск, вы можете сделать следующее:

var serializer = new CalendarSerializer();
var serializedCalendar = serializer.SerializeToString(calendar);

using (var stream = new StreamWriter("event.ics"))
{
    stream.Write(serializedCalendar);
}

Это создаст файл с именем «event.ics» в вашей выходной папке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...