Действие Silverlight и призма

При использовании Prism для композиции в Silverlight как связать действия между модулями?

Я вынужден использовать систему событий или есть способ установить TargetName для моих действий на имя UserControl в другом модуле?

Например:

<Image Height="40" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="40" Source="/SilverlightDemo.MainToolbar;Component/Images/i_chart.png" Stretch="Fill" Canvas.Left="222" Canvas.Top="55">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <Actions:ToggleCollapseAction

                            TargetName="HERE:/SilverlightDemo.Modules.TargetModule;Views/TargetModuleView" 
                            CollapseHorizontal="False" 
                            CollapseVertical="False"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Image>

person Community    schedule 20.09.2009    source источник


Ответы (2)


Поскольку одним из преимуществ использования Prism является наличие разделенных приложений, модуль не знает о других модулях (поэтому нет сведений о пользовательских элементах управления другого модуля). Следовательно, какой-то механизм между ними должен устанавливать связь между модулями.

Наиболее распространенный способ сделать это - использовать агрегатор событий. Если вы хотите уменьшить объем кода, стоящего за вашими представлениями, просто используйте команду в XAML и запускайте события в ViewModel.

Следующие темы посвящены аналогичным вопросам:

Пожалуйста, дайте мне знать, если это поможет.

Дамиан Шенкельман

http://blogs.southworks.net/dschenkelman

person Community    schedule 21.09.2009

Я нашел решение в Prism4 Documents,

Глава 9: Обмен данными между слабосвязанными компонентами

person Community    schedule 27.04.2011
comment
Что в главе говорится об этом вопросе? - person ajacian81; 23.11.2012