Как получить управляющее свойство с помощью свойства зависимости - PullRequest
0 голосов
/ 12 сентября 2018

Я новичок в зависимости. Я пытаюсь решить мою проблему в получении собственности моего контроля.

Я использую Syncfusion Syntax Editor, и я использую лицензию сообщества.

Вот ссылка на редактор синтаксиса

https://help.syncfusion.com/wpf/syntaxeditor/overview

На данный момент я смог динамически искать текст, используя привязку свойств из моей ViewModel.

Вот код, который я использую для поиска

public class EditControlSearchHelper
    {
        //https://thomasfreudenberg.com/archive/2010/08/01/binding-webbrowser-content-in-wpf/
        public static readonly DependencyProperty FindTextProperty =
        DependencyProperty.RegisterAttached("FindText", typeof(string), typeof(EditControlSearchHelper), new PropertyMetadata(OnFindTextChanged));

        public static string GetFindText(DependencyObject dependencyObject)
        {
            return (string)dependencyObject.GetValue(FindTextProperty);
        }

        public static void SetFindText(DependencyObject dependencyObject, string FindText)
        {
            dependencyObject.SetValue(FindTextProperty, FindText);
        }

        private static void OnFindTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var r = (EditControl)d;
            r.Focus();
            bool isFound = false;
            int next = 0;
            for (int i = next; i <= r.Lines.Count; i++)
            {
                if (i < r.Lines.Count && r.Lines[i].Text.Contains((string)e.NewValue))
                {
                    Regex rr = new Regex(Regex.Escape((string)e.NewValue), RegexOptions.IgnorePatternWhitespace);
                    Match m = rr.Match(r.Lines[i].Text);

                    if (m.Success)
                    {
                        r.SelectLines(i, i, m.Index, m.Index + m.Length);
                        isFound = true;
                    }
                }
            }

            if (isFound == false)
            {
                MessageBox.Show("The selected text from the pdf is not found please select another");
                next = 0;
            }
        }

    }

И я называю код в моем Xaml следующим образом

<syncfusion:EditControl  e:EditControlSearchHelper.FindText="{Binding SearchText}" />

Мне нужно

enter image description here

enter image description here

enter image description here

Но эти свойства будут иметь свои значения, когда выделен текст, который у меня уже есть.

Итак, мой вопрос: как мне добавить другое свойство для тех, которые мне нужны? Используя свойство зависимости, как я могу вызвать Event selectionChanged в свойстве зависимости.

Надеюсь, вы понимаете мой английский.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...