private void ShowTextInUI(TextHookData textHookData) { if (DataManager.Instance.SelectHeadDataList.Contains(textHookData.HeadData)) { Application.Current.Dispatcher.BeginInvoke((Action <TextHookData>)((textHookData) => { OldText.Text = textHookData.TextData; NewText.Text = selectedFilter == null? textHookData.TextData : selectedFilter(textHookData.TextData); }), textHookData); } }
public void ShowText(TextHookData textHookData) { if (DataManager.Instance.SelectHeadDataList.Contains(textHookData.HeadData)) { var filterFunc = DataManager.Instance.TextFilterFunc; var meCabNodes = DataManager.Instance.MeCabUniDic22Wrapper.ParseSentence(filterFunc == null ? textHookData.TextData : filterFunc(textHookData.TextData)); // PrintMeCabNodes(meCabNodes); Application.Current.Dispatcher.BeginInvoke((Action <TextHookData>)((textHookData) => { TextWarpPanel.Children.Clear(); foreach (var meCabNode in meCabNodes) { var tmpStackPanel = new StackPanel(); tmpStackPanel.Orientation = Orientation.Vertical; var textBlock1 = new TextBox(); textBlock1.BorderThickness = new Thickness(0); textBlock1.IsReadOnly = true; textBlock1.Background = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0)); textBlock1.Text = $"{meCabNode.Surface}"; tmpStackPanel.Children.Add(textBlock1); var textBlock2 = new TextBox(); textBlock2.BorderThickness = new Thickness(0); textBlock2.IsReadOnly = true; textBlock2.Background = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0)); textBlock2.Text = $"{meCabNode.LForm}"; tmpStackPanel.Children.Add(textBlock2); var border = new Border(); border.Margin = new Thickness(5, 2, 5, 2); border.Child = tmpStackPanel; TextWarpPanel.Children.Add(border); } }), textHookData); } }
private void ShowTextInListBox(TextHookData _) { // 虽然每次输出都调用一次这个方法有些浪费 // 但是这不是长期开着的窗口,感觉问题不大 Application.Current.Dispatcher.BeginInvoke(() => { // 把 Items 全清了后,把 TextractorHelper 暂存字典里的值都拿来排序后显示 TextListBox.Items.Clear(); DataManager.Instance.TextractorHelper.TextractorOutPutDic.Values .OrderBy(x => x.HeadData) .ToList() .ForEach(x => { TextListBox.Items.Add(x); }); // 若存在已经选中的项,选中它们 // TextListBox.SelectedItems.Clear(); // 上面已经 Clear 了 Items,这里不需要 Clear DataManager.Instance.TextractorHelper.TextractorOutPutDic.Values .Where(x => DataManager.Instance.SelectHeadDataList.Contains(x.HeadData)) // 改成 Linq 嵌套? .ToList() .ForEach((x) => { TextListBox.SelectedItems.Add(x); }); }); }