我正在寻找以下情况的解决方案.
在我的应用程序中,我有一个页面说page1,我在page1中放置了一个用户控件.我的要求是我需要在page1的代码后面的用户控件中使用按钮的click事件.我如何在windows phone / silverlight中实现相同目标.
1.第一种和正确的方式:
(如果您了解MVVM模式)将控制MyControl,以公开类型为ICommand的DependencyProperty,例如,MyControlButtonClickCommand.
XAML:
<UserControl> <Button Command={Binding MyControlButtonClickCommand,Source={RelativeSource Self}} /> </UserControl>
代码隐藏:
public ICommand MyControlButtonClickCommand { get { return (ICommand)GetValue(MyControlButtonClickCommandProperty); } set { SetValue(MyControlButtonClickCommandProperty,value); } } public static readonly DependencyProperty MyControlButtonClickCommandProperty = DependencyProperty.Register("MyControlButtonClickCommand",typeof(ICommand),typeof(MyControl),new PropertyMetadata(null));
您将使用UserControl,如下所示:
<phone:PhoneApplicationPage> <namespace:MyControl MyControlButtonClickCommand="{Binding ControlButtonCommand}" /> </phone:PhoneApplicationPage>
ControlButtonCommand是ViewModel(您的自定义对象)的属性,位于Page的DataContext中.
还有一种更简单,更脏的方式,我不鼓励你去:
就像你公开MyControlButtonClickCommand依赖属性而不是暴露它一样,你可以公开一个事件MyControlButtonClick并在页面的xaml中订阅它.在UserControl的代码内部,您应该订阅它的按钮的Click事件并激活它自己的MyControlButtonClick事件.
希望这会帮助你.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。