Страницы

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

суббота, 7 марта 2020 г.

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

#c_sharp #wpf


Здравствуйте!
У меня возникла проблема "красивого" способа изменения настроек "на лету". 
Наример:

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)
или как-то так) 
Я хотел чтобы можно было просто вызвать свойство и всё. А класс его описывающий самостоятельно
получил бы вызывающий объект, запомнил, и при последующем изменении свойства, автоматически
применил новое значение ко всем ранее вызывавшим это свойство объектам. Фух
    


Ответы

Ответ 1



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

Ответ 2



Нет. Никак нельзя. При присвоении значения в любую пропертю ты передаешь ЛИШЬ значение проперти. Но ты можешь написать метод который бы сразу обьект и из него доставал бы текст,если для тебя это важно.

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

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