![](/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.