public void PopulateList(Memo memo) { MemoList.Add(new Memo { Title = memo.Title, Content = memo.Content }); }
public async void LoadData() { var memos = await _sqlite.GetMemoAsync(); foreach (var memo in memos) { MemoList.Add(new Memo { Title = memo.Title, Content = memo.Content, Id = memo.Id }); } }
/// <summary> /// プロパティに保持中の情報を新規SelfMemoとして追加する /// </summary> private void AddMemoToList() { SelfMemoItem newmemo = new SelfMemoItem(Word.Value, ShortWord.Value, Description.Value, Category.Value); if (!MemoList.Contains(newmemo)) { MemoList.Add(newmemo); // プロパティを空白で初期化 Word.Value = ""; ShortWord.Value = ""; Description.Value = ""; Category.Value = ""; //SaveMemoFile(); // MemoListのハンドラで実施されるのでここでは不要 // WordのTextboxをフォーカスする IsSelected.Value = true; } }
public MainViewModel() { // タイトルに表示する文字列を指定 var asm = Assembly.GetExecutingAssembly().GetName(); AppName.Value = asm.Name + " - " + asm.Version.Major + "." + asm.Version.Minor; // 表示するリスト(filteredItemsSource)のソースとフィルタの設定 FilteredItemsSource = new CollectionViewSource { Source = MemoList }; FilteredItemsSource.Filter += (s, e) => { var item = e.Item as SelfMemoItem; e.Accepted = CheckFilterStr(FilterStr.Value, item) && CheckCategoryFilter(item); }; // ファイルが有ればロードしてMemoListを更新 if (File.Exists(MemoFileName)) { SelfMemoList.LoadMemoFile(MemoList, MemoFileName); } // MemoListが空なら、ヘルプメッセージ的な項目を追加する if (SelfMemoList.ItemsList.Count == 0) { MemoList.Add(new SelfMemoItem("用語", "正式名称、別名、訳語など", "用語の解説", "カテゴリ")); MemoList.Add(new SelfMemoItem("SelfMemo", "概要", "キーワードと関連情報(訳語、正式名称、説明など)を登録し、ど忘れした時に見返しやすくするアプリです。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "検索機能", "検索フォームからキーワード検索ができます。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "ショートカット", "グローバルホットキー(デフォルトでAlt+Shift+F2)でいつでもアプリ起動します。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "項目追加", "メニューの「登録ダイアログを開く(Ctrl+R)」からキーワードの追加ができます。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "項目編集", "編集ビューから登録内容の編集ができます。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "カテゴリフィルタ", "「カテゴリ」メニューでカテゴリ毎の表示フィルタリングができます。", "本アプリの説明")); } // Filter文字列が更新されたら、Filterされたアイテムリストを更新 FilterStr.Subscribe(_ => { // 既にタイマーが走ってたら、一旦止める if (FilteredItemsRefreshTimer.IsEnabled) { FilteredItemsRefreshTimer.Stop(); } // タイマー開始 FilteredItemsRefreshTimer.Interval = TimeSpan.FromMilliseconds(300); FilteredItemsRefreshTimer.Tick += (s, e) => { FilteredItems.Refresh(); FilteredItemsRefreshTimer.Stop(); }; FilteredItemsRefreshTimer.Start(); }); // Filter文字列の有無フラグを連動 UseFilterStr = FilterStr.Select(x => !string.IsNullOrWhiteSpace(x)).ToReadOnlyReactivePropertySlim(); // カテゴリ選択ComboBoxが更新されたら、Filterされたアイテムリスト更新 CategoryListSelected.Subscribe(_ => { if (!FilteredItemsRefreshTimer.IsEnabled) { FilteredItemsRefreshTimer.Interval = TimeSpan.FromMilliseconds(300); FilteredItemsRefreshTimer.Tick += (s, e) => { FilteredItems.Refresh(); FilteredItemsRefreshTimer.Stop(); }; FilteredItemsRefreshTimer.Start(); } }); // 選択項目をSelectedItemに入れる処理 FilteredItems.CurrentChanged += (s, e) => { SelectedItem.Value = FilteredItems.CurrentItem as SelfMemoItem; }; // UseCategoryListはカテゴリリストからなんか選択されてたらTrue UseCategoryList = CategoryListSelected.Select(x => !string.IsNullOrEmpty(x)).ToReadOnlyReactivePropertySlim(); // カテゴリリストのON/OFFを切り替えるタイミングでもカテゴリリストの内容更新 UseCategoryList.Subscribe(_ => { SelfMemoList.UpdateCategoryList(); }); // MemoListのコレクションが更新されたらファイルに保存 MemoList.CollectionChanged += (s, e) => { SelfMemoList.SaveMemoFile(MemoList, MemoFileName); }; WindowWidth.Subscribe(_ => { ExpanderWidth.Value = Math.Max(400, WindowWidth.Value / 2); }); }