将事件从主页传递到用户控件中的元素

时间:2016-02-02 14:02:31

标签: c# wpf user-controls

我在WPF项目中有MainPage。此页面包含侧栏,我想在UserControl中移动它。但是这个侧边栏还有一些元素,例如Buttonclick个事件。在代码隐藏中,此事件与绑定到MainPage的viemModel相关。所以我不想将这个viewModel绑定到UserControl。 我想做什么 - 将此事件传递给MainPage上的用户控件,然后此事件绑定到Button中的UserControl

是可能做的还是坏的?感谢

例如:

SideBar有按钮:

<Button Grid.Column="1" Width="44" Height="44" Style="{StaticResource SearchBtn}" Click="Search_TextChanged" >
    <Button.Content>
            <Image Height="15" Width="15" Source="/Assets/icon-search.png"/>
    </Button.Content>
</Button>

点击事件与ViewModel

相关
private void Search_TextChanged(object sender, EventArgs e)
    {
        _resultViewModel.Search_TextChanged(tbSearch.Text);
    }

2 个答案:

答案 0 :(得分:0)

首先,最好不要使用后面的代码,尤其是不要使用点击事件。我建议在你的应用程序中使用MVVM模式这样你可以使用命令进行点击事件,这也可以在堆栈中冒泡。

您还可以在主页上分享ViewModel,也可以分享您的用户控件

答案 1 :(得分:0)

我同意Jordy,你应该在你的应用程序中实现一个MVVM模式。您可以查看MVVM Light https://mvvmlight.codeplex.com/或从nuget包管理器获取。使用MVVM Light,您将能够使用中继命令处理按钮单击事件,并能够在用户控件与其内置Messenger之间进行通信。