我有ListView
并绑定ItemSource
到ICollectionView
属性,并将所选项绑定到dp属性。
public static readonly DependencyProperty SelectedProperty =
DependencyProperty.Register("Selected",
typeof(Myclass),
typeof(MyControl), new PropertyMetadata(SelectedContactChange));
static void SelectedContactChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
MyControlcontrol = d as MyControl;
control.MYView = CollectionViewSource.GetDefaultView(((Myclass)e.NewValue).Numbers);
}
我有另一个列表视图和绑定项目源到MYView属性。
ICollectionView _myView;
public ICollectionView MYView
{
get { return _myView; }
set
{
_myView= value;
}
}
更改SelectedProperty时我为MYView设置了值,但是在listview中没有显示与MYView绑定的新值!!!
更改SelectedProperty时如何更改MYView属性?
答案 0 :(得分:0)
不是100%肯定,但我猜你的ListView的ItemsSource绑定到MyControl类的MYView
属性,可能是这样的:
<MyControl x:Name="myControl" ... />
<ListView ItemsSource="{Binding MYView, ElementName=myControl}" />
当您现在更改MYView
属性的值时,没有机制通知绑定更改。您应该实施INotifyPropertyChanged并在MYView
更改时提升PropertyChanged事件:
public class MyControl : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ICollectionView MYView
{
get { return _myView; }
set
{
_myView = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("MYView"));
}
}
}
}
或者,您可以将MYView
定义为另一个依赖项属性。