我想让UserControl(GridSearch)里面有另一个UserControl_2。我想使用XAML将一些FrameworkElement添加到UserControl_2的面板。DependencyProperty ObservableCollection事件
所以我做的ObservableCollection的DependencyProperty在GridSearch:
public partial class GridSearch : UserControl
{
public GridSearch()
{
InitializeComponent();
}
public ObservableCollection<Filter> Filters
{
get { return (ObservableCollection<Filter>)GetValue(FiltersProperty); }
set { SetValue(FiltersProperty, value); }
}
public static readonly DependencyProperty FiltersProperty =
DependencyProperty.Register("Filters",
typeof(ObservableCollection<Filter>),
typeof(GridSearch),
new FrameworkPropertyMetadata(getObservableFilters(), null)
);
private static ObservableCollection<Filter> getObservableFilters()
{
var ob = new ObservableCollection<Filter>();
ob.CollectionChanged += ob_CollectionChanged;
return ob;
}
private static void ob_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
}
}
现在我试图用ob_CollectionChanged新元素添加到面板上。但是,因为它是静态方法,我无法访问该面板。我无法投递发件人,因为它只给了我ObservableCollection。但是我需要GridSearch。
我正在寻找从几个小时的解决方案,我无法找到任何想法如何解决它。
我刚才已经做了分钟前。它看起来像“Public ObservableCollection Filters”属性由GridSearch的所有对象实例共享,它不能像这样。 –
Filters属性本身不是共享的,但是您使用相同的集合实例初始化它 - 新的FrameworkPropertyMetadata(getObservableFilters(),null) – Jogy