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);
    }

そして、私は別のリストビューとMYViewプロパティへのバインディングitemsourceを持っています。

 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 に答える