public void AddCustomMemberDescriptor(ICustomMemberDescriptor descriptor) { if (descriptor == null) { throw new ArgumentNullException(nameof(descriptor)); } var propItem = new PropertyItem { PropertyName = descriptor.DisplayName }; var memberInfos = descriptor.GetMemberInfos(); if (memberInfos == null) { LoggerService.WriteCallerLine($"{nameof(memberInfos)} can't be null."); return; } _vm.Items.Add(propItem); ThreadInvokerExtensions.AddBufferItemsToCollection( propItem.Items, memberInfos, memberInfo => { var infoPropItem = new PropertyItem { PropertyName = memberInfo.DisplayName, Value = memberInfo.Value?.ToString() }; infoPropItem.SetInstance <IMemberInfo>(memberInfo, Constants.PropertyItemTag_MemberInfo); return(infoPropItem); }, sleepInterval: 100 ); //_vm.Item.CompositeCustomMemberDecriptor(descriptor); }