![](/img/trans.png)
[英]How to create Silverlight 4 user control for windows phone app?
[英]How to create datacontextchanged event in windows phone 8 silverlight
我想扩展我的UserControl类,以便它可以在其中具有datacontextchanged事件,就像在Windows Phone xaml
应用程序中一样。
但是我找不到那个事件。
此DataContextChangedEventArgs在Windows Phone的基于xaml的应用程序中,但是在Silverlight中创建项目时找不到该事件
[免责声明:我不是Windows Phone开发人员,所以我所说的有关移动Silverlight的内容都是基于我在msdn上阅读的内容(但从未尝试过),以及与普通的功能齐全的浏览器Silverlight一起工作所了解的内容。
仅在Silverlight 5中支持DataContextChanged事件。据我所知,Silverlight的移动版本基于Silverlight4。这意味着您必须自己实现该事件。 只需在UserControl中定义类型为object的依赖项属性,然后直接与DataContext绑定即可。 一旦DataContext更改,您的绑定对象将反映此更改,因此您可以轻松地检测到它并触发您自己的事件。
public class MyControl : UserControl
{
public MyControl()
{
BindingOperations.SetBinding( this, MyControl.ObservedDataContextProperty, new Binding() );
}
public object ObservedDataContext
{
get { return (object) GetValue( ObservedDataContextProperty ); }
set { SetValue( ObservedDataContextProperty, value ); }
}
public static readonly DependencyProperty ObservedDataContextProperty =
DependencyProperty.Register( "ObservedDataContext", typeof( object ), typeof( MyControl ), new PropertyMetadata( null, OnObservedDataContextChanged ) );
private static void OnObservedDataContextChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
((MyControl) d).OnObservedDataContextChanged();
}
private void OnObservedDataContextChanged()
{
RaiseDataContextChanged();
}
private void RaiseDataContextChanged()
{
var h = DataContextChanged;
if (h != null) h( this, EventArgs.Empty );
}
public event EventHandler DataContextChanged;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.