Как указать область привязки команд в MVVM? - PullRequest
0 голосов
/ 07 января 2012

Я возиться с MVVM и наткнулся на препятствие с командами привязки к кнопкам.У меня есть несколько кнопок в представлении (= UserControl), которые создаются на основе списка объектов, которые у меня есть.

Мой код выглядит следующим образом:

(MainWindow)

<ItemsControl ItemsSource="{Binding ViewModels}" Margin="12,57,12,12" />

(UserControl)

    <ItemsControl ItemsSource="{Binding AllConnections}" Margin="0,34,0,0">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Button Content="{Binding Password}" Height="23" HorizontalAlignment="Left" Margin="114,12,0,0" Name="button1" VerticalAlignment="Top" Width="75" Command="{Binding Path=ConnectCommand}" />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

Но ConnectCommand не вызывается иЯ предполагаю, что это потому, что XAML ищет его в привязке AllConnections, а не привязке ViewModels, где это необходимо.Как мне это указать?

Ответы [ 2 ]

3 голосов
/ 07 января 2012

Вы должны использовать Относительный источник, чтобы указать предка. Примерно так:

Command = "{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=ViewModel.CommandToBind}"
1 голос
/ 08 января 2012

Вы можете добавить свою команду в Ресурсы и просто использовать {StaticResource yourCommand}.Это может значительно упростить xaml.


Полезные ссылки:
Команды WPF, Как объявить команды уровня приложения?
Команды как ресурсы XAML
MVVM Командование внутри таблички данных

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