我目前在做與C#/ WPF的用戶控件,我使用一些DependencyProperty的對象。的DependencyProperty回調不叫
我想要做的是當值的變化,我們稱之爲回調方法來處理一些數據...我看到有用於此目的的PropertyChangedCallback類,但它不工作..
這裏是我的代碼:
用戶控件:
public partial class TimeLine : UserControl
{
public static readonly DependencyProperty FramecountProperty = DependencyProperty.Register("FrameCount", typeof(Int32), typeof(TimeLine), new FrameworkPropertyMetadata(0, new PropertyChangedCallback(FrameCountChanged)));
public Int32 FrameCount
{
get { return (Int32)this.GetValue(FramecountProperty); }
set { this.SetValue(FramecountProperty, value); }
}
// More code...
public static void FrameCountChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// Do stuff
}
}
XAML:
<!-- Time line container -->
<controls:TimeLine Grid.Row="2" Header="Storyboard" FrameCount="{Binding FrameCount}" />
ViewModel:
private Int32 frameCount;
public Int32 FrameCount
{
get { return this.frameCount; }
// this is from: https://github.com/ShyroFR/CSharp-Elegant-MVVM
set { this.NotifyPropertyChanged(ref this.frameCount, value); }
}
public MainViewModel()
{
this.FrameCount = 42;
}
我是我做錯了嗎?
感謝您的幫助。
試試這個,幀數=「{結合,幀數,模式=雙向}」我不認爲它結合兩種方式,你必須告訴它做它,你也可以,如果你想讓它綁定兩個添加到您的依賴屬性默認方式 – adminSoftDK
顯示你如何實現'NotifyPropertyChanged'。不要擔心雙向綁定。你在這裏沒有一個,你不需要一個。 PropertyChangedCallback應該在源屬性更改時調用(也適用於單向綁定)。 – Clemens
還要確保綁定具有源對象。即你已經在某處設置了一個DataContext(對於類MainViewModel的一個實例)。 TimeLine控件是否顯示任何內容? – Clemens