FantasticFiasco Ответов: 2

Настройка родителя всплывающего окна


Каково родительское свойство всплывающего набора? В следующем коде родительское свойство всплывающего окна равно null.

var text = new TextBox();
text.Text = "Popup Text";

var popup = new Popup();
popup.Child = text;
popup.PlacementTarget = button;
popup.Placement = PlacementMode.Bottom;
popup.IsOpen = true;


где кнопка это кнопка с именем в XAML.

Если я добавляю ComboBox в свой XAML, он также визуализирует свое содержимое как всплывающее окно, но его родительское свойство установлено в сетку. Как ему это удается?

Ravi Sant

не уверен в этом, вы пробовали:
UIElement parent = this.Родитель;
родитель.Ребенок = всплывающее окно;
что-то вроде этого?

2 Ответов

Рейтинг:
2

chelsicska

Вам нужно использовать поведение или расширить всплывающее окно (всплывающую подсказку).

public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();
            var method = typeof(FrameworkElement).GetMethod("AddLogicalChild", BindingFlags.Instance | BindingFlags.NonPublic);
            method.Invoke(_coreParent, new object[] { Parent });
        }


Когда вы создаете свой класс, вам нужно установить coreParent. Это работает. После этого вы можете использовать RelativeSource например если ваше всплывающее окно или всплывающая подсказка являются дочерними элементами вашего контроля


Richard MacCutchan

Этот вопрос был задан более 4 лет назад. Пожалуйста,не воскрешайте такие мертвые вопросы.

Рейтинг:
1

FantasticFiasco

Моя проблема основана на том факте, что у моего всплывающего окна нет родителя. Если я исследую ComboBox с помощью Snoop, который также использует всплывающее окно для представления элементов в выпадающем списке, кажется, что Microsoft сама имеет возможность установить родителя, так как всплывающее окно ComboBox имеет сетку в качестве родителя, но когда я создаю всплывающее окно и устанавливаю PlacementTarget, Parent по-прежнему равен null. А поскольку родительское свойство доступно только для чтения, я понятия не имею, как установить родительское свойство или что нужно сделать, чтобы Microsoft установила его внутренне.