我有两个自定义控件,a和b,
自定义控件a
具有类型为aClass
自定义控件b
上有一组a
,并且具有名为List<aClass>
ItemSourceUI
还有另一个类bClass
,它具有aClass
类型的可观察集合,这在我的视图模型中使用。
public class MyViewModel : INotifyPropertyChanged
{
public MyViewModel()
{
MyBClassInstance = new bClass();
}
private bClass _MyBClassInstance;
public bClass MyBClassInstance
{
get { return _MyBClassInstance; }
set { SetProperty(ref _MyBClassInstance, value); }
}
....
// Here Implement INotifyPropertyChanged
}
这是我的观点
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:UILib="clr-namespace:Gramas.UI;assembly=Gramas" x:Class="MyProy.Views.myView"
Title="{Sample}" Height="600" Width="1200">
<Grid>
<UILIb:b Margin="10" ItemSourceUI="{Binding MyBClassInstance}"/>
</Grid>
</Window>
在构造函数后面的代码中:
this.DataContext = new MyViewModel();
我的问题是在ItemSourceUI
自定义控件的b
的依赖属性Setter永远不会发生。
我缺少什么?
UPDATE:这是b
public bClass ItemSourceUI
{
get { return (bClass)GetValue(ItemSourceUIProperty ); }
set
{
SetValue(ItemSourceUIProperty , value);
DataContext = value;
}
}
public static readonly DependencyProperty ItemSourceUIProperty =
DependencyProperty.Register("ItemSourceUI", typeof(bClass), typeof(b), new PropertyMetadata(default(bClass)));
答案 0 :(得分:0)
此代码会导致您遇到的所有问题。你搞砸了DataContext和Binding需要适当的DataContext才能工作。
public bClass ItemSourceUI
{
get { return (bClass)GetValue(ItemSourceUIProperty ); }
set
{
SetValue(ItemSourceUIProperty , value);
DataContext = value;
}
}
从setter中删除那个DataContext,你应该没问题。
如果您对此有任何疑问,请随时询问:)