Beispiel #1
0
        private void cboFieldName_SelectionChanged(object sender, Infragistics.Controls.Editors.SelectionChangedEventArgs e)
        {
            if (sender is Infragistics.Controls.Editors.XamMultiColumnComboEditor)
            {
                Infragistics.Controls.Editors.XamMultiColumnComboEditor cb = sender as Infragistics.Controls.Editors.XamMultiColumnComboEditor;

                if (cb.SelectedIndex == -1)
                {
                    return;
                }
                FilterItem curItem = (FilterItem)((ListBoxItem)lbMain.ContainerFromElement(cb)).Content; //FcItems[lbMain.SelectedIndex];
                if (curItem != null)
                {
                    cField prevITem = null; try { prevITem = e.RemovedItems[0] as cField; } catch { }
                    //curItem.Field = e.AddedItems[0] as cField;
                    FcItems_Set_newField_Value(curItem, e.AddedItems[0] as cField);

                    int pos = lbMain.Items.IndexOf(curItem);
                    //dynamic item = lbMain.[pos];
                    ListBoxItem item = lbMain.ItemContainerGenerator.ContainerFromIndex(pos) as ListBoxItem;
                    System.Windows.Controls.Image imgtype = VisualTree.FindFirstElementInVisualTree <System.Windows.Controls.Image>(item);
                    if (prevITem != null && curItem.Field != null && prevITem.FieldType != curItem.Field.FieldType)
                    {
                        imgtype.Tag    = Enum.GetName(typeof(Strings4Enums.qFieldType), curItem.Field.FieldType);
                        imgtype.Source = new ImageSourceConverter().ConvertFromString(getImageAttr_Type(curItem.Field.FieldType)) as ImageSource;
                    }
                    ComboBox cboAttrClause = VisualTree.SearchVisualTreeForCombo(item, "cboClause");


                    if (cboAttrClause != null)
                    {
                        Debug.WriteLine(cboAttrClause.Name);
                        oClausesLoad(_CaseSensitive);
                        cboAttrClause.ItemsSource       = oClauses.Where(c => c.Attr_Type == curItem.Field.FieldType);
                        cboAttrClause.DisplayMemberPath = "Text"; cboAttrClause.SelectedValuePath = "Attr_Clause";
                        cboAttrClause.SelectedIndex     = 0;
                        //curItem.Clauses = ((dynamic)cboAttrClause.SelectedItem).Attr_Clause;
                        FcItems_Set_newClause_Value(curItem, ((dynamic)cboAttrClause.SelectedItem).Attr_Clause);
                    }
                    //FcItems[FcItems.IndexOf(curItem)].Field =  curItem.Field;
                    //         FcItems[pos].Clauses = curItem.Clauses;
                    //Debug.WriteLine(curItem.Field.FieldName);
                }
            }
        }
Beispiel #2
0
 void FcItems_Set_newField_Value(FilterItem curItem, cField newField)
 {
     foreach (var fcitem in _viewModel.FilterItems) //foreach (var fcitem in FcItems)
     {
         if (fcitem == curItem)
         {
             System.Reflection.PropertyInfo[] Fields = fcitem.GetType().GetProperties();
             foreach (System.Reflection.PropertyInfo field in Fields)
             {
                 var currentField = field.GetValue(fcitem, null);
                 if (field.PropertyType.Name == "cField")
                 {
                     field.SetValue(fcitem, newField);
                     return;
                 }
             }
         }
     }
 }