Привязать значение параметра в ObjectDataProvider в WPF

Я хотел бы иметь возможность делать это:

    <ObjectDataProvider x:Key="dataProvider"
                        ObjectInstance="uiRoot:App.Current.Controller" 
                        MethodName="GetMyViewModel">
        <ObjectDataProvider.MethodParameters>
            <system:Int32>{Binding Id}</system:Int32>
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>

Акцент делается на

            <system:Int32>{Binding Id}</system:Int32>

Я не могу обойти это. Любые идеи? :(


person Andrei Rînea    schedule 02.06.2010    source источник


Ответы (1)


Привязки в WPF, которых вы пытаетесь достичь, могут быть прикреплены только к DependencyProperties. Свойство MethodParameters не является DependencyProperty, поэтому привязка к нему никогда не будет работать.

У меня сложилось впечатление, что вы хотите получить ObjectDataProvider для каждого элемента в списке. Это правильно?

Вы пытаетесь использовать шаблон MVVM? В этом случае создайте структуру VM таким образом, чтобы контейнер ViewModel содержал список дочерних моделей ViewModel, вместо того, чтобы пытаться создать экземпляр VM через ObjectDataProvider. Вы можете привязать элементы списка к дочерним виртуальным машинам, не используя ObjectDataProvider для каждого элемента.

Вывод состоит в том, что вы не должны использовать ObjectDataProvider для каждого элемента в списке.

С наилучшими пожеланиями,

Ян ван де Поль

person Jan van de Pol    schedule 24.09.2010