UserControl Silverlight в MVVM с RelayCommand <T>- пример? - PullRequest
0 голосов
/ 13 июля 2011

Есть ли у кого-нибудь хороший пример для создания UserControl, а затем связывания с ним команд?

Моя проблема - перенаправить команду в элемент управления в UserControl, например, в событие Drop TreeView. Непонятно, как я могу это сделать.


Оба ответа интересны и спасибо, они помогают, но ...

Я хочу что-то подобное:

Использование:

<my:MyControl Command="{Binding XCommand}" CommandParameter="{Binding [Here what?]}"/>

Элемент управления содержит два DependencyProperties, Command и CommandParameters, и я хотел бы связать эти два DependecyProperties с событием TreeView - Drop. Как я могу это сделать? Поскольку использование CommandParameter является обратным: не элемент управления передает параметр, но пользователи хотят что-то: CommandParameter = "{Binding Text, ElementName = DisableCommandTextBox}"

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

Вы пытаетесь переслать событие в вашу модель просмотра.Я думаю, вам не нужен RelayCommand, но вам понадобится EventToCommand.Я не знаю, как связать события древовидной структуры, но вы всегда можете попробовать.

Пример использования MVVM Light: http://geekswithblogs.net/lbugnion/archive/2009/11/05/mvvm-light-toolkit-v3-alpha-2-eventtocommand-behavior.aspx

<Rectangle Fill="White"
           Stroke="Black"
           Width="200"
           Height="100">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseEnter">
            <cmd:EventToCommand Command="{Binding TestCommand,
                                          Mode=OneWay}"
               CommandParameter="{Binding Text,
                                  ElementName=MyTextBox,
                                  Mode=OneWay}"
               MustToggleIsEnabledValue="True" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Rectangle>
1 голос
/ 13 июля 2011

К сожалению, мы не можем привязать RelayCommand внутри модели представления непосредственно к событию Drop из-за ограничений TreeView.

Однако эта проблема была ранее решена.Посмотрите на эту ссылку , чтобы увидеть, как это было сделано.Если вам нужен пример более типичной привязки команды (возможно, к кнопке), оставьте комментарий ниже, и я добавлю его.

0 голосов
/ 15 июля 2011

Мне просто нужно было покинуть CommandParameter, и я вызываю команду в обработчике событий SelectedItemChanged с параметром подходящим способом.

...