Какой метод мне следует вызвать, чтобы получить заголовок редактора в формах c# Xamarin? - PullRequest
0 голосов
/ 06 апреля 2020
protected override void OnAppearing()
        {
            base.OnAppearing();
            var diary = new List<DiaryProperties>();
            var files = Directory.EnumerateFiles(App.FolderPath, "*.notes.txt");
            foreach(var filename in files)
            {
                diary.Add(new DiaryProperties 
                {
                    //all properties are defined in the Models folder.
                    Filename=filename,
                    //Title=how to get title ??? 
                    Text=File.ReadAllText(filename),
                    Date=File.GetCreationTime(filename)
                });
            }
            listview.ItemsSource = diary.OrderBy(d => d.Date).ToList();
        }
//xaml code
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyDiary.AddNewNote"
             Title="Add New Note">
    <ContentPage.ToolbarItems>
        <ToolbarItem Text="+" 
                     Clicked="OnSaveClickedButton"/>
        <ToolbarItem Grid.Column="1"
                     Text="*"
                     Clicked="OnDeleteClickedButton"/>
    </ContentPage.ToolbarItems>
    <ContentPage.Content>
        <StackLayout Margin="20">
            <Editor Placeholder="Title"
                    PlaceholderColor="#000"
                    Text="{Binding Title}"
                    HeightRequest="50"/>
            <Editor Placeholder="Enter Your Note"
                    Text="{Binding Text}"
                    AutoSize="TextChanges"/>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

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

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyDiary.MyNotes"
             Title="My Notes">
    <ContentPage.ToolbarItems>
        <ToolbarItem Text="+"
                     Clicked="OnNoteAddedClicked"/>
    </ContentPage.ToolbarItems>
    <ListView x:Name="listview"
              Margin="20"
              ItemSelected="OnListViewItemSelected">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout>
                        <Label Text="{Binding Title}"
                               FontSize="18"
                               TextColor="#f35e20" />
                        <Label Text="{Binding Text}"
                               FontSize="15"
                               TextColor="#503026" />
                        <Label Text="{Binding Date}"
                               FontSize="15"
                               TextColor="#503026" />
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ContentPage>

приведенный выше код предназначен для отображения элементов в виде списка, и это основная страница приложения.

public AddNewNote()
        {
            InitializeComponent();
        }
        async void OnSaveClickedButton(object sender, EventArgs e)
        {
            var Diary = (DiaryProperties)BindingContext;
            if (string.IsNullOrWhiteSpace(Diary.Filename))
            {
                //save
                var filename = Path.Combine(App.FolderPath, $"{Path.GetRandomFileName()}.notes.txt");
                File.WriteAllText(filename, Diary.Text);
            }
            else
            {
                //update
                File.WriteAllText(Diary.Filename, Diary.Text);
            }

            await Navigation.PopAsync();
        }

Приведенный выше код предназначен для сохранения новой заметки, как вы сказали, пожалуйста, дайте мне знать, что мне нужно сделать, чтобы сделать первую строку в качестве заголовка. Спасибо

1 Ответ

1 голос
/ 07 апреля 2020

просто добавьте Title к началу ваших данных

string data = Diary.Title + Environment.Newline;
data += Diary.Text;
File.WriteAllText(filename, data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...