Interaction.GetBehaviors из комбинированного списка типов FrameworkElementFactory - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь скрыть динамический комбинированный список того, что установлено в FrameworkElementFactory.Если я пытаюсь использовать Combobox в качестве параметра, то я получаю сообщение об ошибке «ComboBox» - это тип, который недопустим в данном контексте, и если я пытаюсь использовать fElement в качестве параметра, то выдает ошибку «невозможно преобразовать из« System.Windows.FrameworkElementFactory »в'System.Windows.DependencyObject' "Мне нужно решение на C #, а не на xaml или ASP.net.

 FrameworkElementFactory fElement = new FrameworkElementFactory(typeof(ComboBox));

       fElement.SetValue(ComboBox.WidthProperty, 125D);
            fElement.SetValue(ComboBox.ItemsSourceProperty, choices);
            fElement.SetValue(ComboBox.DisplayMemberPathProperty, "Value");
            fElement.SetValue(ComboBox.SelectedValuePathProperty, "Value");
            fElement.SetValue(ComboBox.NameProperty, "CONAAM" + rowOnderdeel.OnderdeelID);
            //fElement.SetValue(ComboBox.NameProperty, Onderdeelnaam);
            fElement.AddHandler(Selector.SelectionChangedEvent, new SelectionChangedEventHandler(cbCursistOnderdeelResultaat));
            fElement.SetBinding(ComboBox.TextProperty, bind);
            Interaction.GetBehaviors(ComboBox).Add(new HideComboxBehavior());

1 Ответ

0 голосов
/ 30 января 2019

Решением было использовать System.Windows.Style и использовать setter для запуска видимости выпадающего списка.

FrameworkElementFactory fElement = new FrameworkElementFactory(typeof(ComboBox));
                    fElement.SetValue(ComboBox.WidthProperty, 125D);
                    fElement.SetValue(ComboBox.ItemsSourceProperty, Resultaten);
                    fElement.SetValue(ComboBox.DisplayMemberPathProperty, "Value");
                    fElement.SetValue(ComboBox.SelectedValuePathProperty, "Key");
                    fElement.SetValue(ComboBox.SelectedValueProperty, new Binding(column.ColumnName));

                    Style cbStyle = new Style(typeof(ComboBox));
                    Setter cbSetter = new Setter(ComboBox.VisibilityProperty, Visibility.Visible);                  
                    cbStyle.Setters.Add(cbSetter);

                    DataTrigger cbDataTrigger = new DataTrigger();
                    Binding cbBinding = new Binding(column.ColumnName);

                    cbDataTrigger.Value = 0;

                    Setter cbDataSetter = new Setter(ComboBox.VisibilityProperty, Visibility.Hidden);

                    cbDataTrigger.Setters.Add(cbDataSetter);
                    cbDataTrigger.Binding = cbBinding;
                    cbStyle.Triggers.Add(cbDataTrigger);               

                    fElement.SetValue(ComboBox.StyleProperty, cbStyle);

                    DataTemplate dataTemplate = new DataTemplate();
                    dataTemplate.VisualTree = fElement;
                    gvc.CellTemplate = dataTemplate;
...