WPF - Как получить фактический введенный текст из UserControl TextBox в окно - PullRequest
1 голос
/ 15 июня 2019

Я пытаюсь записать фактический введенный текст из UserControl в Window.

Код управления пользователем:

public partial class FormGenerals : UserControl
{
    public FormGenerals()
    {
        InitializeComponent();
    }

    public string ProductTitle
    {
        get { return txtProductTitle.Text; }
        set { txtProductTitle.Text = value; }
    }

    public string ProductDescription
    {
        get { return txtProductDescription.Text;  }
        set { txtProductDescription.Text = value; }
    }

    public string ProductPrice
    {
        get { return txtProductPrice.Text; }
        set { txtProductPrice.Text = value; }
    }

    public static readonly RoutedEvent TextFieldChangedEvent =
   EventManager.RegisterRoutedEvent("TextFieldChangedEvent", RoutingStrategy.Bubble,
   typeof(RoutedEventHandler), typeof(FormGenerals));

    public event RoutedEventHandler TextFieldChanged
    {
        add { AddHandler(TextFieldChangedEvent, value); }
        remove { RemoveHandler(TextFieldChangedEvent, value); }
    }

    private void TxtProductTitle_TextChanged(object sender, TextChangedEventArgs e)
    {
        RaiseEvent(new RoutedEventArgs(TextFieldChangedEvent));
    }

    private void TxtProductDescription_TextChanged(object sender, TextChangedEventArgs e)
    {
        RaiseEvent(new RoutedEventArgs(TextFieldChangedEvent));
    }

    private void TxtProductPrice_TextChanged(object sender, TextChangedEventArgs e)
    {
        RaiseEvent(new RoutedEventArgs(TextFieldChangedEvent));
    }

И часть окна:

public partial class AddNotebookSmall : Window
{

    static FormGenerals formGenerals = new FormGenerals();
    public AddNotebookSmall()
    {
        InitializeComponent();
        btnSaveFormula.IsEnabled = false;
        AddHandler(FormGenerals.TextFieldChangedEvent, new RoutedEventHandler(Window_UserControl_TextFieldChangedEventHandlerMethod));
    }

    private void Window_UserControl_TextFieldChangedEventHandlerMethod(object sender, RoutedEventArgs e)
    {
        Console.WriteLine(formGenerals.ProductTitle);
        Console.WriteLine(formGenerals.ProductDescription);
        Console.WriteLine(formGenerals.ProductPrice);
    }
}

XAML - это что-то вроде TextBox Text = "введите заголовок", где вводимый заголовок должен быть заполнителем. При вводе, например, abc, он должен регистрировать a, ab, abc, что он фактически делает при регистрации из самого UserControl, но не из окна.

При попытке выполнить запись в журнал из окна, он распознает изменения, что означает, что работает EventHandler, но не сам текст.

Таким образом, когда я, например, ввожу abc в поле названия продукта, он регистрирует меня, вводит заголовок, вводит заголовок, вводит заголовок. Как я могу передать фактический вмененный текст в окно?

Я тоже пробовал через DependencyProperty, но получил тот же результат. Я не понимаю, где у меня есть но.

Любая помощь приветствуется, спасибо заранее!

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