【问题标题】:mvvm Pass button click to parentmvvm 传递按钮单击到父级
【发布时间】:2014-02-05 15:45:37
【问题描述】:

注意:这与此处的问题不同:Pass dependency property to child view

我目前正在 wpf 中创建一个用户控件,它由用户将点击通过的几个“屏幕”组成。

对于每个“屏幕”,我都使用它自己的视图模型创建了一个视图(例如 View1.xaml、View2.xaml)。然后主用户控件可以访问这些视图:

<UserControl.Resources>
    <local:ModuleBaseViewModel x:Key="ViewModelDataSource" />
</UserControl.Resources>

<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource ViewModelDataSource}}">
    <local:View1 Visibility="Visible"/>
    <local:View2 Visibility="Hidden"/>
</Grid>

我想将按钮单击从视图传递回父用户控件,以便我可以隐藏该视图并显示下一个视图。有人可以向我解释一下如何做到这一点吗?

谢谢!

【问题讨论】:

  • 您需要在每个视图中创建一个在单击按钮时触发的事件,例如OnButtonClicked,然后您的用户控件才能注册到该事件

标签: wpf xaml mvvm


【解决方案1】:

如果您使用的是 MVVM 和 WPF,那么您很可能使用的是 IoC 容器。几乎每个 IoC 容器都包含一个发布事件然后订阅该事件的方法。在 Prism 中,代码如下所示:

EventAggregator.GetEvent<SomeEvent>().Publish(ParametersHere)

我建议您查看发布事件并对其做出反应的选项。然后你的父视图模型可以响应子事件。

【讨论】:

    猜你喜欢
    • 2018-10-01
    • 2021-05-09
    • 2020-11-17
    • 2013-11-07
    • 2018-01-23
    • 2013-09-08
    • 1970-01-01
    • 2021-06-11
    • 2013-08-04
    相关资源
    最近更新 更多