我对以下情况有问题(为简洁起见,代码已剪切)。基本上,在设置依赖属性时,我的用户控件属性的Setter没有被调用,我需要解决这个问题。
我在View.xaml中有以下代码。
在 View.xaml.cs 文件中。
在我的 ViewModel 中,我公开了一个属性。
最后,过滤器用户控件定义如下。
由于某些原因,PrimaryItemSource属性被设置了,但Setter没有被调用。我是否需要将PropertyChange事件添加到PropertyMetadata对象中来处理这个问题,因为这似乎对于一个简单的问题来说是很多代码。
我在View.xaml中有以下代码。
<Filter:Filter x:Name="ProductFilter" PrimaryItemSource="{Binding CarrierProducts}" />
在 View.xaml.cs 文件中。
public ProductPricing()
{
InitializeComponent();
ViewModel.Filter.ProductPricing vm = new ViewModel.Filter.ProductPricing();
this.DataContext = vm;
}
在我的 ViewModel 中,我公开了一个属性。
public ObservableCollection<Model.FilterItem> _carrierProducts;
public ObservableCollection<Model.FilterItem> CarrierProducts
{
get
{
return _carrierProducts;
}
set
{
if (_carrierProducts != value)
{
_carrierProducts = value;
RaisePropertyChanged("CarrierProducts");
}
}
}
最后,过滤器用户控件定义如下。
public static readonly DependencyProperty PrimaryItemSourceProperty =
DependencyProperty.Register("PrimaryItemSource", typeof(ObservableCollection<Model.FilterItem>), typeof(Filter), new PropertyMetadata(null));
public ObservableCollection<Model.FilterItem> PrimaryItemSource
{
get
{
return (ObservableCollection<Model.FilterItem>)GetValue(PrimaryItemSourceProperty);
}
set
{
SetValue(PrimaryItemSourceProperty, value);
ComboBox combo = _filters.ElementAt(0);
FilterSourceChange(combo, value);
}
}
由于某些原因,PrimaryItemSource属性被设置了,但Setter没有被调用。我是否需要将PropertyChange事件添加到PropertyMetadata对象中来处理这个问题,因为这似乎对于一个简单的问题来说是很多代码。