Как я могу отправить элементы из ListView по электронной почте (xamarin.forms) - PullRequest
1 голос
/ 03 августа 2020

Я использую: https://docs.microsoft.com/en-us/xamarin/essentials/email?tabs=android для отправки данных по электронной почте.

Я могу отправить обычную строку прямо сейчас, но мне трудно понять, как отправить данные из моего списка и отформатируйте их, как картинку (строка для каждого элемента).

Если бы кто-нибудь мог дать мне представление о том, как это сделать, я был бы признателен.

Примечание : мне просто нужен текст из каждого элемента ListView.

Большое спасибо.

image

Мой метод отправки электронной почты, который имеет другие данные, которые было легко реализовать, потому что это не элементы просмотра списка

private async void EmailButtonClicked(object sender, EventArgs e)
{

    var message = new EmailMessage
    {
        Subject = "Résultat d'exposition quotidienne",
        Body = DureeTotal.Text + " " + SumTotalHours.Text + h.Text + Environment.NewLine + Environment.NewLine + LeqText.Text + " " + LeqResult.Text + dBA.Text
        + Environment.NewLine + Environment.NewLine + ExpositionResultText.Text + " " + ExpositionResult.Text + dBA8.Text + output
    };
    await Email.ComposeAsync(message);
}

моя страница ViewModel, которая имеет набор задач и TasksGroup (которые являются свойствами, которые генерируют необходимые данные)

class ResultPageViewModel : BaseViewModel
{
    private ObservableCollection<Tasks> tasks;
    public ObservableCollection<Tasks> Tasks
    {
        get
        {
            return tasks;
        }
        set
        {
            tasks = value;
            NotifyPropertyChanged();
        }
    }

    private TasksGroup tasksGroup;
    public TasksGroup TasksGroup
    {
        get => tasksGroup;
        set
        {
            tasksGroup = value;
            NotifyPropertyChanged();
        }
    }


    public ResultPageViewModel(TasksGroup tasksGroup)
    {
        
        TasksGroup = tasksGroup;
        var data = TasksGroup.Taches;
        Sum = TimeSpan.Zero;

        Tasks = new ObservableCollection<Tasks>(data);
        TasksGroup.Taches.ForEach(x =>
        {
            TaskDBA = x.TaskDBA;
            TaskDuration = x.TaskDuration;
            TaskDescription = x.TaskDescription;

            var TaskGroupDuration = Helper.GetDuration(x.TaskDuration);

            Sum = Sum.Add(TaskGroupDuration);
        });
        SumTotalHours += Math.Round(Sum.TotalHours, 4);

        LeqResult = CalculateLeq(tasksGroup);
    }

    public double CalculateLeq(TasksGroup group)
    {
        return Math.Round(10 * Math.Log10((1/SumTotalHours)*group.Taches.Sum(x =>
Helper.GetDuration(x.TaskDuration).TotalHours * Math.Pow(10, Convert.ToDouble(x.TaskDBA) / 10.0))), 1);
    }

}

1 Ответ

1 голос
/ 04 августа 2020

Вы можете преобразовать данные ListView в строку Json, а затем отправить их как тело электронного письма.

Например, следующий код для преобразования ObservableCollection<Tasks> to Json строка:

using Newtonsoft.Json;  

ResultPageViewModel pageViewModel = new ResultPageViewModel();
string output = JsonConvert.SerializeObject(pageViewModel.Tasks);

Теперь строка output может быть отправлена ​​как тело письма.

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