我绑定如下:
views:SciChartUserControl Name="SciChartUserControl" Quotes="{Binding QuoteCollection}"></views:SciChartUserControl>
我确定QuoteCollection
更新了,因为网格也绑定了它,我看到它已更新。我希望在SciChartUserControl
视图的代码隐藏中收到通知,但{{1}永远不会被调用。这让我发疯,我已经尝试了几个小时的不同方式......我忽略了一些明显的东西?
QuotesPropertyChanged
编辑:我添加了托管public partial class SciChartUserControl : UserControl
{
private SciChartControlViewModel _viewModel;
public SciChartUserControl()
{
//Set ViewModel Datacontext
_viewModel = new SciChartControlViewModel();
DataContext = _viewModel;
InitializeComponent();
}
public static DependencyProperty QuotesProperty = DependencyProperty.Register("Quotes", typeof(List<Quote>), typeof(SciChartUserControl), new PropertyMetadata(QuotesPropertyChanged));
public List<Quote> Quotes
{
get
{
return (List<Quote>)GetValue(QuotesProperty);
}
set
{
SetValue(QuotesProperty, value);
}
}
private static void QuotesPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
throw new NotImplementedException();
var quotes = (List<Quote>) e.NewValue;
}
}
的部分视图。
SciChartUserControl
答案 0 :(得分:1)
尝试为PropertyMetadata
类使用另一个构造函数:
public static DependencyProperty QuotesProperty = DependencyProperty.Register("Quotes",
typeof(List<Quote>), typeof(SciChartUserControl),
new PropertyMetadata(someDefaultvalue, QuotesPropertyChanged));
可能是您使用的PropertyChangedCallback
对象的单个参数构造函数与采用单个object
参数的对象混淆。
答案 1 :(得分:0)
试试这个...... 在依赖属性声明中将PropertyMetadata更改为以下..
new PropertyMetadata(null, new PropertyChangedCallback(QuotesPropertyChanged))
答案 2 :(得分:0)
我相信这是因为你已经在你的代码中设置了你的DataContext,我在XAML中设置时遇到了同样的问题?好像DependencyProperty是相对于UserControl的DataContext绑定的。 UserControl's DependencyProperty is null when UserControl has a DataContext
<views:SciChartUserControl Name="SciChartUserControl"
Quotes="{Binding DataContext.QuoteCollection, RelativeSource={RelativeSource AncestorType={x:Type dxdo:LayoutPanel}}}" />