Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Пробросить свойство зависимости в UserControl

#c_sharp #wpf


Есть UserControl:


    

    
    
    



Я добавил в него свойство зависимости:

public string Text
{
    get
    {
        return (string)GetValue(TextProperty);
    }
    set
    {
        SetValue(TextProperty, value);
        txt.Text = Text; // txt мой tetxtbox из контрола
    }
}

public static readonly DependencyProperty TextProperty =
    DependencyProperty.Register("Text", typeof(string), typeof(TextBoxP), new PropertyMetadata(null));


Потом в проекте пишу:




Но текст не отображается, как исправить?
    


Ответы

Ответ 1



Это делается примерно так: А свойство зависимости должно быть обычное: public string Text { get => (string)GetValue(TextProperty); set => SetValue(TextProperty, value); } public static readonly DependencyProperty TextProperty = DependencyProperty.Register(nameof(Text), typeof(string), typeof(TextBoxP)); Не забывайте, что обычное свойство к свойству зависимости нужно лишь для удобства использования в коде, при установке свойств в XAML фреймворк пишет значение напрямую в DependencyProperty TextProperty, собственно поэтому никакая логика, помещенная в сеттер Text, не будет выполняться.

Ответ 2



Привет. Элемент TextBox имеет свойство Text, intellisence не всегда корректно дополняет xaml. Ссылки. https://msdn.microsoft.com/en-us/library/system.windows.controls.textbox.text(v=vs.110).aspx https://www.dotnetperls.com/textbox-wpf У меня работает в таком виде:

Комментариев нет:

Отправить комментарий