Привязать свойство XAML к произвольному объекту из codebehind - PullRequest
0 голосов
/ 29 марта 2012

Я чувствую, что это должно быть легко, но я провел последние несколько часов, пытаясь найти решения для этого, и, похоже, ничего не работает.

У меня есть объект в коде XAML, и я хочу связать одно из его свойств с объектом, который был создан в коде c #. Это моя стратегия до сих пор:

<setpwindows:ScalingWindow
    ...
>
    <setpwindows:ScalingWindow.Resources>
        <localwpf:ObjectProvider x:Key="locationProvider"/>
    </setpwindows:ScalingWindow.Resources>
    ...
        ...
            <DataGridTextColumn
                Header="Code Out"
                Binding="{Binding Source={StaticResource locationProvider}, Path=Obj.Name}"
            />
        ...
    ...
</setpwindows:ScalingWindow>

с ObjectProvider следующим образом:

class ObjectProvider : DependencyObject
{
    private object _obj;
    public object Obj
    {
        get { System.Diagnostics.Debug.WriteLine("Got object as " + _obj); return _obj; }
        set { _obj = value; System.Diagnostics.Debug.WriteLine("Set object to " + _obj); }
    }

    public static readonly DependencyProperty ObjProperty = DependencyProperty.Register("Obj", typeof(object), typeof(ObjectProvider));

    public ObjectProvider() {}
}

После того, как окно инициализировано, я устанавливаю Obj следующим образом:

WPFObjects.ObjectProvider locProv = this.FindResource("locationProvider") as WPFObjects.ObjectProvider;
locProv.Obj = _tempLocation;

Это, наконец, не дает мне ошибок связывания в окне вывода, но на самом деле ничего не связывает. Какой стандартный способ сделать это?

1 Ответ

3 голосов
/ 30 марта 2012

Это все виды ошибок, вот лишь несколько указателей:

  • свойства зависимостей являются целями привязок, а не источниками.
  • Вы устанавливаете Obj где-нибудь?Есть ли у того, что вы установили, свойство name?

Затем вы узнаете об FrameworkElement.DataContext и интерфейсах уведомлений, которые вы можете реализовать для уведомления свойств зависимостей об изменениях в ваших источниках данных.см. в коде других людей hiw, например, как выглядят модели представления и как они связаны с пользовательским интерфейсом.

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