Привязать значение параметра в 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>

Я не могу обойти это. Есть идеи?:(

1 ответ

Решение

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

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

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

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

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

Ян ван де Пол

Другие вопросы по тегам