3 using Windows.UI.Xaml.Controls;
4 using Windows.UI.Xaml.Controls.Primitives;
5 using Windows.UI.Xaml.Input;
7 namespace FooEditEngine.UWP
9 public class AutoCompleteBox : AutoCompleteBoxBase
11 private string inputedWord;
12 private ListBox listBox1 = new ListBox();
13 private Popup popup = new Popup();
16 public const int CompleteListBoxHeight = 200;
18 public AutoCompleteBox(Document doc) : base(doc)
21 this.popup.Child = this.listBox1;
22 this.listBox1.DoubleTapped += ListBox1_DoubleTapped;
23 this.listBox1.KeyDown += listBox1_KeyDown;
24 this.listBox1.Height = CompleteListBoxHeight;
29 /// オートコンプリートの対象となる単語のリスト
31 public override CompleteCollection<ICompleteItem> Items
35 return (CompleteCollection<ICompleteItem>)this.listBox1.ItemsSource;
39 this.listBox1.ItemsSource = value;
40 this.listBox1.DisplayMemberPath = CompleteCollection<ICompleteItem>.ShowMember;
44 protected override bool IsCloseCompleteBox
48 return !this.popup.IsOpen;
52 protected override void RequestShowCompleteBox(ShowingCompleteBoxEventArgs ev)
54 this.inputedWord = ev.inputedWord;
55 this.listBox1.SelectedIndex = ev.foundIndex;
56 this.listBox1.ScrollIntoView(this.listBox1.SelectedItem);
57 this.popup.IsOpen = true;
58 Canvas.SetLeft(this.popup, ev.CaretPostion.X);
59 Canvas.SetTop(this.popup, ev.CaretPostion.Y);
62 protected override void RequestCloseCompleteBox()
64 this.popup.IsOpen = false;
67 public bool ProcessKeyDown(FooTextBox textbox, KeyRoutedEventArgs e,bool isCtrl,bool isShift)
69 if (this.popup.IsOpen == false)
71 if (e.Key == VirtualKey.Space && isCtrl)
73 this.OpenCompleteBox(string.Empty);
83 case VirtualKey.Escape:
84 this.RequestCloseCompleteBox();
85 textbox.Focus(Windows.UI.Xaml.FocusState.Programmatic);
89 if (this.listBox1.SelectedIndex + 1 >= this.listBox1.Items.Count)
90 this.listBox1.SelectedIndex = this.listBox1.Items.Count - 1;
92 this.listBox1.SelectedIndex++;
93 this.listBox1.ScrollIntoView(this.listBox1.SelectedItem);
97 if (this.listBox1.SelectedIndex - 1 < 0)
98 this.listBox1.SelectedIndex = 0;
100 this.listBox1.SelectedIndex--;
101 this.listBox1.ScrollIntoView(this.listBox1.SelectedItem);
105 case VirtualKey.Enter:
106 this.RequestCloseCompleteBox();
107 CompleteWord selWord = (CompleteWord)this.listBox1.SelectedItem;
108 this.SelectItem(this, new SelectItemEventArgs(selWord.word, this.inputedWord, this.Document));
116 private void ListBox1_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
118 this.popup.IsOpen = false;
119 CompleteWord selWord = (CompleteWord)this.listBox1.SelectedItem;
120 this.SelectItem(this, new SelectItemEventArgs(selWord.word, this.inputedWord, this.Document));
123 void listBox1_KeyDown(object sender, KeyRoutedEventArgs e)
125 if (e.Key == VirtualKey.Enter)
127 this.popup.IsOpen = false;
128 CompleteWord selWord = (CompleteWord)this.listBox1.SelectedItem;
129 this.SelectItem(this, new SelectItemEventArgs(selWord.word, this.inputedWord, this.Document));