0

我有一个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);
    }

我有另一个列表视图并将 itemsource 绑定到 MYView 属性。

 ICollectionView _myView;
    public ICollectionView MYView
    {
        get { return _myView; }
        set
        {
            _myView= value;
        }
    }

当更改 SelectedProperty 时,我为 MYView 设置了值,但不在与 MYView 绑定的列表视图中显示新值!!!

更改 SelectedProperty 时如何更改 MYView 属性?

4

1 回答 1

0

不是 100% 确定,但我猜您的 ListView 的 ItemsSource 绑定到MYView您的 MyControl 类的属性,可能是这样的:

<MyControl x:Name="myControl" ... />
<ListView ItemsSource="{Binding MYView, ElementName=myControl}" />

当您现在更改MYView属性的值时,没有任何机制可以通知绑定更改。您应该实现INotifyPropertyChanged并在更改时引发PropertyChanged事件MYView

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为另一个依赖属性。

于 2012-12-08T09:21:49.507 回答