private void CellEditElement_SelectionChanged(object sender, SelectionChangedArg e, object dataContext) { if (internalChange) { return; } //فقط وقتی کاربر انتخاب میکند باید اینجا بیاد var property = dataContext.GetType().GetProperty(this.DataMemberBinding.Path.Path); if (property != null) { if (e.SelectedItem != null) { var sourcevalueproperty = e.SelectedItem.GetType().GetProperty(this.SelectedValueMemberPath); if (sourcevalueproperty != null) { //AppendToItemsSource(e.SelectedItem); var value = sourcevalueproperty.GetValue(e.SelectedItem); property.SetValue(dataContext, value); } } else { if (property.PropertyType == typeof(string)) { property.SetValue(dataContext, null); } else if (MyBaseLookup.IsNumericType(property.PropertyType)) { property.SetValue(dataContext, 0); } } } }
private List <object> FindItemInItemsSource(IList itemsSource, string bindvalue) { if (itemsSource != null) { var filter = new Dictionary <string, string>(); filter.Add(SelectedValueMemberPath, bindvalue.ToString()); return(MyBaseLookup.GetFilteredItems(itemsSource, filter)); } else { return(new List <object>()); } }