1

我需要幫助將自定義屬性添加到UserControl。我創建了一個視頻播放器用戶控件,我想在另一個應用程序中實現它。我的UserControl中有一個mediaElement控件,我想從我的UserControl的應用程序訪問mediaElement.Source。將自定義屬性添加到UserControl

我嘗試這樣做:我好像[Player.xaml.cs]

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 

    namespace VideoPlayer 
    { 
    public partial class Player : UserControl 
    { 
     public static readonly DependencyProperty VideoPlayerSourceProperty = 
     DependencyProperty.Register("VideoPlayerSource", typeof(System.Uri), typeof(Player), null); 

     public System.Uri VideoPlayerSource 
     { 
      get { return mediaElement.Source; } 
      set { mediaElement.Source = value; } 
     } 


     public Player() 
     { 
      InitializeComponent(); 
     } 

無法找到在屬性框中屬性。有關於此的任何幫助?

+0

你可以添加一些更多的代碼?就像這個屬性所在的類聲明一樣? – juanreyesv

+0

如果將屬性更改爲字符串,那麼它會顯示出來嗎? –

+0

我編輯的問題。現在檢查代碼 – JohnTurner

回答

0

您對DependencyProperty CLR包裝(getter/setter)使用的語法不正確。
使用下列正確的代碼:

public static readonly DependencyProperty VideoPlayerSourceProperty = DependencyProperty.Register("VideoPlayerSource", 
    typeof(System.Uri), typeof(Player), 
    new PropertyMetadata(null, (dObj, e) => ((Player)dObj).OnVideoPlayerSourceChanged((System.Uri)e.NewValue))); 

public System.Uri VideoPlayerSource { 
    get { return (System.Uri)GetValue(VideoPlayerSourceProperty); } // !!! 
    set { SetValue(VideoPlayerSourceProperty, value); } // !!! 
} 
void OnVideoPlayerSourceChanged(System.Uri source) { 
    mediaElement.Source = source; 
} 
+0

謝謝,它的工作:) – JohnTurner

0

你需要改變你的得到設置從屬性。嘗試更換此:

public System.Uri VideoPlayerSource 
{ 
    get { return mediaElement.Source; } 
    set { mediaElement.Source = value; } 
} 

有了這個:

public System.Uri VideoPlayerSource 
{ 
    get { return (System.Uri)GetValue(VideoPlayerSourceProperty); } 
    set { SetValue(VideoPlayerSourceProperty, value); } 
} 
相關問題