MVVM множественные привязки в пользовательском элементе управления - PullRequest
1 голос
/ 15 марта 2012

У меня есть UserControl "SubjectListView". Для привязки установлено значение «AllSubjects», которое представляет собой коллекцию ObservableCollection внутри SubjectListViewModel. Он используется для получения имени и выполнения команды. Имя извлекается, однако команда, которая также находится в SubjectListViewModel, не выполняется для кнопки, а работает с кнопкой, которая не создается динамически за пределами области действия.

Есть ли решение?

<StackPanel>
    <ItemsControl ItemsSource="{Binding AllSubjects}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Button Width="100" Content="{Binding Name}" <!-- Is working-->
                    Command="{Binding InvasionCommand}" <!--Is NOT working--> />
                </StackPanel>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
    <Button Content="Check for Invasion" Width="120" Command="{Binding InvasionCommand}" <!-- Is working-->/>
</StackPanel>

1 Ответ

2 голосов
/ 15 марта 2012

Проблема в том, что InvasionCommand находится в вашей модели представления (я так думаю), но вы находитесь в фактическом элементе вашего ItemsSource ..

Для этого я использую ElementSpy, но я думаю, что это будет работать, если вы используете RelativeSource ..

Здесь у вас есть обзор всех возможных привязок: http://www.nbdtech.com/Free/WpfBinding.pdf

Или, если вы дадите вашей StackPanel имя Container, вы можете связать следующее:

Binding ElementName=Container, Path=DataContext

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