示例#1
0
 private void UserControl_Loaded(object sender, RoutedEventArgs e)
 {
     if (this.DataContext == null)
         return;
     enumInfo = this.DataContext as PropertyValueConverter.PropertyInfo;
     EnumValueComboBox.SelectedItem = enumInfo.PropertyValue.GetType().GetEnumName(enumInfo.PropertyValue);
 }
示例#2
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                return(null);
            }

            PropertyValueConverter.PropertyInfo pi = value as PropertyValueConverter.PropertyInfo;
            if (pi == null)
            {
                throw new InvalidOperationException("Value must be property info struct");
            }

            object[] attribs = pi.PropertyType.GetCustomAttributes(true);
            foreach (object attribute in attribs)
            {
                if (attribute is MochaHint)
                {
                    MochaHint hint = attribute as MochaHint;
                    pi.PropertyValue = (hint.converter as IValueConverter).Convert(pi.PropertyValue, targetType, parameter, null);
                    return(pi);
                }
            }
            return(pi);
        }
示例#3
0
 private void UserControl_Loaded(object sender, RoutedEventArgs e)
 {
     if (this.DataContext == null)
     {
         return;
     }
     enumInfo = this.DataContext as PropertyValueConverter.PropertyInfo;
     EnumValueComboBox.SelectedItem = enumInfo.PropertyValue.GetType().GetEnumName(enumInfo.PropertyValue);
 }
示例#4
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                return(null);
            }
            var compack = value as MultiComponentPack;

            List <MultiPropertyPack> pack = new List <MultiPropertyPack>();

            if (compack.merged_components.Count == 0)
            {
                return(null);
            }

            MochaInterface.Component c = compack.merged_components[0];

            PropertyValueConverter pvc = new PropertyValueConverter();
            var pi_ret = new ObservableCollection <PropertyValueConverter.PropertyInfo>();

            pi_ret = pvc.Convert(c, null, "Component", null) as ObservableCollection <PropertyValueConverter.PropertyInfo>;

            foreach (var pi in pi_ret)
            {
                MultiPropertyPack ppack = new MultiPropertyPack();
                ppack.merged_data = pi.PropertyValue;
                MultiPropertyInfoWrapper merged_pi = new MultiPropertyInfoWrapper();
                merged_pi.merged_name        = pi.PropertyName;
                merged_pi.merged_value       = pi.PropertyValue;
                merged_pi.participating_objs = new List <object>();
                foreach (var comp in compack.merged_components)
                {
                    merged_pi.participating_objs.Add(comp);
                }

                PropertyValueConverter.PropertyInfo m_pi = new PropertyValueConverter.PropertyInfo();
                m_pi.PropertyName  = "merged_value";
                m_pi.PropertyObj   = merged_pi;
                m_pi.propertyInfo  = merged_pi.GetType().GetProperty("merged_value");
                m_pi.PropertyType  = pi.PropertyType;
                m_pi.PropertyValue = merged_pi.merged_value;

                ppack.merged_propertyinfo      = m_pi;
                ppack.participating_components = compack.merged_components;
                pack.Add(ppack);
            }
            return(pack);
        }
示例#5
0
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                return(null);
            }
            PropertyValueConverter.PropertyInfo pi = value as PropertyValueConverter.PropertyInfo;
            if (parameter == null)
            {
                return(System.Convert.ChangeType(value, pi.PropertyType));
            }
            //find the changed value and put it back?
            PropertyInfo p = pi.PropertyType.GetProperty(parameter as string);

            p.SetValue(pi.PropertyValue, System.Convert.ChangeType(value, p.PropertyType));
            return(pi.PropertyValue);
        }
示例#6
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                return(null);
            }
            PropertyValueConverter.PropertyInfo pi = value as PropertyValueConverter.PropertyInfo;

            if (parameter == null)
            {
                return(pi.PropertyValue);
            }
            else
            {
                PropertyInfo p = pi.PropertyType.GetProperty(parameter as string);
                return(p.GetValue(pi.PropertyValue));
            }
        }
示例#7
0
 private void PS_NULLPTR_BUTTON_Click(object sender, RoutedEventArgs e)
 {
     if (MessageBox.Show("Use Default Constructor to Create Object?", "Initialize", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
     {
         PropertyValueConverter.PropertyInfo pi = DataContext as PropertyValueConverter.PropertyInfo;
         try
         {
             if (pi.PropertyType == typeof(string))
             {
                 pi.PropertyValue = String.Empty;
             }
             else
             {
                 pi.PropertyValue = pi.PropertyType.GetConstructor(System.Type.EmptyTypes).Invoke(null);
             }
         }
         catch (Exception ex)
         {
             MessageBox.Show("Could not create object\n" + ex.Message);
         }
     }
 }
示例#8
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
                return null;
            var compack = value as MultiComponentPack;

            List<MultiPropertyPack> pack = new List<MultiPropertyPack>();

            if (compack.merged_components.Count == 0)
                return null;

            MochaInterface.Component c = compack.merged_components[0];

            PropertyValueConverter pvc = new PropertyValueConverter();
            var pi_ret = new ObservableCollection<PropertyValueConverter.PropertyInfo>();
            pi_ret = pvc.Convert(c, null, "Component", null) as ObservableCollection<PropertyValueConverter.PropertyInfo>;

            foreach (var pi in pi_ret)
            {
                MultiPropertyPack ppack = new MultiPropertyPack();
                ppack.merged_data = pi.PropertyValue;
                MultiPropertyInfoWrapper merged_pi = new MultiPropertyInfoWrapper();
                merged_pi.merged_name = pi.PropertyName;
                merged_pi.merged_value = pi.PropertyValue;
                merged_pi.participating_objs = new List<object>();
                foreach (var comp in compack.merged_components)
                    merged_pi.participating_objs.Add(comp);

                PropertyValueConverter.PropertyInfo m_pi = new PropertyValueConverter.PropertyInfo();
                m_pi.PropertyName = "merged_value";
                m_pi.PropertyObj = merged_pi;
                m_pi.propertyInfo = merged_pi.GetType().GetProperty("merged_value");
                m_pi.PropertyType = pi.PropertyType;
                m_pi.PropertyValue = merged_pi.merged_value;

                ppack.merged_propertyinfo = m_pi;
                ppack.participating_components = compack.merged_components;
                pack.Add(ppack);
            }
            return pack;
        }