Сохранение файлов в определенную локализацию и отображение их как элементов в ListBox [WPF] - PullRequest
0 голосов
/ 07 апреля 2019

Я пишу приложение для блокнота, похожее на OneNote, Evernote или Apple Notes - только для упражнений - и хочу создать ListBox, в котором будет храниться список сохраненных заметок. Когда пользователь щелкает элемент (примечание), текст открывается в RichTextBox.

Я думал об использовании файлов .xml, в которых будет храниться заголовок заметки, дата создания заметки и локализация файла. Файлы * .rtf, которые будут фактическими файлами заметок, должны быть сохранены в определенном месте. ListBox необходимо обновить, если в указанном месте были какие-либо сохраненные заметки / файлы.


Вот мой сокращенный код XAML:

<Window x:Class="StudyNotes.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:StudyNotes"
    mc:Ignorable="d"
    Title="StudyNotes" Height="450" Width="800" WindowStartupLocation="CenterScreen" Icon="app_icons/appicon2.ico">
<Window.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Save" Executed="Save_Executed" />
</Window.CommandBindings>
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="225" MinWidth="180" MaxWidth="600"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Border Grid.Column="0" Background="#FFDDEFFF" BorderBrush="#FFADBECD" BorderThickness="1" CornerRadius="3"/>
    <ListBox Margin="10,86,10,10.5"/>
    <Button x:Name="NewNoteButton" Margin="0,10,35,0" VerticalAlignment="Top" Height="23" HorizontalAlignment="Right" Width="20" BorderThickness="0" Background="Transparent" BorderBrush="Transparent" Focusable="False" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Click="NewNoteButton_Click">
        <Image Source="/icons/page_add.png" Stretch="None"></Image>
    </Button>
    <Button x:Name="DeleteNoteButton" Margin="0,10,10,0" VerticalAlignment="Top" Height="23" HorizontalAlignment="Right" Width="20" BorderThickness="0" Background="Transparent" BorderBrush="Transparent" Focusable="False" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
        <Image Source="/icons/page_delete.png" Stretch="None"></Image>
    </Button>
</Grid>

Полный код XAML: https://pastebin.com/JbPq2HXT

Вот мой сокращенный код C #:

private void Save_Executed(object sender, ExecutedRoutedEventArgs e)
    {
        SaveFileDialog saveFileDialog = new SaveFileDialog();
        saveFileDialog.Filter = "Rich Text Format (*.rtf)|*.rtf";
        if (saveFileDialog.ShowDialog() == true)
        {
            FileStream fileStream = new FileStream(saveFileDialog.FileName, FileMode.Create);
            TextRange range = new TextRange(MainTextEditor.Document.ContentStart, MainTextEditor.Document.ContentEnd);
            range.Save(fileStream, DataFormats.Rtf);
        }
    }

    private void NewNoteButton_Click(object sender, RoutedEventArgs e)
    {
        FlowDocument document = new FlowDocument();
        MainTextEditor.Document = document;
        TitleBox.Text = "";
    }

Полный код C #: https://pastebin.com/vKhJBAtd


Вот мое приложение и Apple Notes как идея: My app and Apple Notes as example


Что мне нужно сделать, чтобы ListBox работал аналогично Apple Notes, Evernote или чему-то в этом роде?

...