簡體   English   中英

將功能添加到WPF可觀察的集合項更改事件,而不會覆蓋它

[英]add functionality to WPF observable collections item changed event without overriding it

我是WPF的新手,我正在努力為可觀察的集合添加功能。

我有Dropbox,DataGrid和一個列表框。

數據網格和列表框綁定到相應的可觀察集合。

我想將一個偵聽器添加到Dropbox和列表視圖中的項目。

這是我的示例代碼

XAML

     <controls:SearchableDropBox DomainObject="{Binding ClassA}"                            
InputValidationManifest="{Binding ClassValidation, Mode=OneWay}"/>


         <Custom:XamDataGrid DataSource="{Binding Path=ClassB.ClassList}"                        
GroupByAreaLocation="None" />

     <controls:ListBox x:Name="listBoxInputs" ItemsSource="{Binding ClassC, Mode=oneWay}">

VIEMMODEL

 class MainViewModel : ViewModel
    {
        #region Attributes

        private classA _classa;
        private ObservableCollection<classC> _classC;
        private classB;

        #endregion

        public MainViewModel()
        {

            this._classc= new ObservableCollection<classC>();
           this._classB = new classB()


        }

public classA ClassA
        {
            get { return _classA; }
            set
            {
                if (!Equals(value, _classA))
                {

                    _classA= value;
                    SelectionChanged(); //This is the function I want add on //propertychanged event
                    OnPropertyChanged(nameof(classA));
                }

            }
        }

        public ObservableCollection<classC> ClassC
    {
        get { return classC; }
        set
        {
            this.classC= value;
            OnPropertyChanged(nameof(ClassC));
        }
    }

ClassB的

 public class classB
    {
        private ObservableCollection<String> _classList;

    }

我想在選擇保管箱以及在列表框中添加/刪除項目而不覆蓋其當前的notify屬性更改事件時調用SelectionChanged()函數。

對於_classC集合中的添加/刪除,您訂閱CollectionChanged事件。

     public MainViewModel()
    {
        this._classc= new ObservableCollection<classC>();
        this._classB = new classB()
       _classC.CollectionChanged += _classC_CollectionChanged;
    }

     private void _classC_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
        //Populate ClassB.ClassList / Datagrid Function Call
    } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM