//--------------------------------------------------------------------------------------------------------- /// <summary> /// Изменение выбора свойства /// </summary> /// <param name="sender">Источник события</param> /// <param name="args">Аргументы события</param> //--------------------------------------------------------------------------------------------------------- private void OnDataProperties_SelectionChanged(Object sender, SelectionChangedEventArgs args) { CPropertyModelBase property_model = mPropertiesView.CurrentItem as CPropertyModelBase; if (property_model != null) { textDescription.Text = property_model.Description; } }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Потеря фокуса текстового поля значения строкового типа /// </summary> /// <param name="sender">Источник события</param> /// <param name="args">Аргументы события</param> //--------------------------------------------------------------------------------------------------------- private void OnTextBoxString_LostFocus(Object sender, RoutedEventArgs args) { CPropertyModelBase property_model = mPropertiesView.CurrentItem as CPropertyModelBase; if (property_model != null) { property_model.CheckIsValueFromList(); } }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Установка значения из списка для свойства строкового типа /// </summary> /// <param name="sender">Источник события</param> /// <param name="args">Аргументы события</param> //--------------------------------------------------------------------------------------------------------- private void OnMenuItemSetValueFromListForString_Click(Object sender, RoutedEventArgs args) { MenuItem menu_item = args.OriginalSource as MenuItem; CPropertyModelBase property_model = menu_item.Tag as CPropertyModelBase; if (property_model != null) { property_model.SetValue(menu_item.Header.ToString()); property_model.IsValueFromList = true; } }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Проверка на значение из списка /// </summary> //--------------------------------------------------------------------------------------------------------- protected void CheckIsValueFromList() { for (Int32 i = 0; i < mProperties.Count; i++) { CPropertyModelBase property_model = mProperties[i]; if (property_model != null) { property_model.CheckIsValueFromList(); } } }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Проверка на соответствие фильтру /// </summary> /// <param name="item">Объект</param> /// <returns>Статус проверки</returns> //--------------------------------------------------------------------------------------------------------- protected virtual Boolean OnPropertyViewFilter(Object item) { if (String.IsNullOrEmpty(FilterString)) { return(true); } else { CPropertyModelBase property_model = item as CPropertyModelBase; return(property_model.DisplayName.Contains(FilterString, StringComparison.OrdinalIgnoreCase)); } }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Открытие контекстного меню для списка значений строкового типа /// </summary> /// <param name="sender">Источник события</param> /// <param name="args">Аргументы события</param> //--------------------------------------------------------------------------------------------------------- private void OnButtonStringContextMenu_Click(Object sender, RoutedEventArgs args) { FrameworkElement element = args.Source as FrameworkElement; CPropertyModelBase property_model = element.DataContext as CPropertyModelBase; ContextMenu context_menu = element.ContextMenu; if (context_menu != null) { if (property_model != null) { property_model.AssingContenxMenuListValues(context_menu); } context_menu.IsOpen = true; } }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Выбор шаблона привязки данных /// </summary> /// <param name="item">Объект</param> /// <param name="container">Контейнер</param> /// <returns>Нужный шаблон</returns> //--------------------------------------------------------------------------------------------------------- public override DataTemplate SelectTemplate(Object item, DependencyObject container) { DataTemplate template = Invalid; CPropertyModelBase model = item as CPropertyModelBase; if (model != null) { switch (model.PropertyType) { case TPropertyType.Boolean: { template = Boolean; } break; case TPropertyType.Numeric: { template = Numeric; } break; case TPropertyType.Measurement: { template = Measurement; } break; case TPropertyType.Enum: { if (model.IsReadOnly) { template = String; } else { template = Enum; } } break; case TPropertyType.String: { template = String; } break; case TPropertyType.DateTime: { template = DateTime; } break; case TPropertyType.Unknow: break; default: break; } } return(template); }