Я пишу приложение для блокнота, похожее на 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 как идея:
Что мне нужно сделать, чтобы ListBox работал аналогично Apple Notes, Evernote или чему-то в этом роде?