Как получить значение из объекта привязки в коде в виде строки (WPF)

Я хотел бы получить значение от Binding в моем коде и использовать его как строку. Как я могу это сделать?

Binding b = new Binding("MyProperty")
                {
                    Source = myobject
                };
//[...]
string value = b //HOW TO GET VALUE FROM b ?

Кстати: я бы хотел, чтобы конвертер, прикрепленный к Binding, вызывал при получении этого значения.


person gmik    schedule 21.05.2018    source источник
comment
Я не уверен, что правильно понимаю ваш вопрос, но моя цель - только получить ценность, поскольку она привязана к b   -  person gmik    schedule 21.05.2018
comment
Что делать, если у меня есть ‹MultiBinding StringFormat = {0} - {1}› ‹Путь привязки = Имя /› ‹Путь привязки = Id /› ‹/MultiBinding› и я хочу получить строку result = // Smith - 777 Должен быть возможность получить Binding / Multibinding для извлечения того, к чему это привязано, верно?   -  person gmik    schedule 21.05.2018
comment
Если вы пытаетесь использовать привязку для получения значения myobject.MyPoperty, взгляните на эти ответы. Этот вопрос можно было бы улучшить, если бы вы четко и недвусмысленно заявили на английском языке, какую ценность вы хотите получить.   -  person 15ee8f99-57ff-4f92-890c-b56153    schedule 21.05.2018


Ответы (1)


Я обнаружил, что решением может быть вспомогательный класс с DependencyProperty.

Вспомогательный класс

public class TestClass : FrameworkElement
{
    public string MyProperty
    {
        get { return (string)GetValue(MyPropertyProperty); }
        set { SetValue(MyPropertyProperty, value); }
    }
    public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(string), typeof(TestClass), new PropertyMetadata(""));
}

Привязка преобразования к String

Binding b = new Binding("MyProperty") { Source = myobject };
TestClass tc = new TestClass { DataContext = b };
BindingOperations.SetBinding(tc, TestClass.MyPropertyProperty, b);
string txt = tc.MyProperty;

Преимущества:

  • Вы можете использовать Binding и MultiBinding
  • Вы можете использовать конвертеры

Недостатки:

  • Каждый раз, когда мы создаем класс, который наследуется от FrameworkElement, что означает, что мы выполняем ненужные операции.
person gmik    schedule 22.05.2018