Страницы

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

четверг, 23 мая 2019 г.

C# Получить объект вызвавший getter свойства

Здравствуйте! У меня возникла проблема "красивого" способа изменения настроек "на лету". Наример:
private string _text; public string SampleTextProp { get { return _text; }
set { _text = value; } }
textBlock1.Text = SampleTextProp;
И вопрос: Есть ли возможность внутри геттера SampleTextProp получить объект textBlock1.Text, чтобы позже использовать его? В сеттере например. То есть мне нужно получить объект, который вызвал геттер. Надеюсь я понятно выразился... Спасибо большое! Update: Для чего мне это нужно. Есть класс хранящий в себе настройки для приложения представленные как свойства. По мере написания программы я применяю эти свойства к различным полям или свойствам других объектов. Но эти настройки будут применяться только при запуске программы, а мне надо видеть изменения во время исполнения. В тоже время я не хочу вручную связывать настройку и объект применяющий её (windowBorder.BorderThickness = Settings.Interface.BorderThickness.GetValue(windowBorder) или как-то так) Я хотел чтобы можно было просто вызвать свойство и всё. А класс его описывающий самостоятельно получил бы вызывающий объект, запомнил, и при последующем изменении свойства, автоматически применил новое значение ко всем ранее вызывавшим это свойство объектам. Фух


Ответ

То, что вам нужно, называется "дата-биндинг" (data binding, по русски - привязка данных) и идет рука об руку с шаблоном проектирования MVVM (Model - View - View Model).
Для WinForms это делается через вкладку свойств, далее - пункт (ApplicationSettings) для привязки настроек или пункт (DataBindings) для привязки источника данных.
В WPF это делается через указание в разметке конструкции {Binding}
BorderThickness="{Binding BorderThickness, Source={x:Static Settings.Default}}"
Если вы используете не стандартный класс настроек, а пишите свой - не забудьте реализовать интерфейс INotifyPropertyChanged

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

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