Альтернатива FindAncestor RelativeSource в Silverlight 4 для привязки к свойству страницы - PullRequest
0 голосов
/ 06 мая 2010

FindAncestor RelativeSource поддерживает только «Self» и «TemplatedParent», но я должен привязать ширину всплывающего окна к ширине страницы.

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

<Popup IsOpen="True"
       Width="{Binding ElementName=BordPage, Path=Width}"
       Height="{Binding ElementName=BordPage, Path=Height}">

Справочная информация:

Я использую здесь приложение на основе навигации SL4.BordPage - это страница навигации, которую я использую несколько раз в приложении.Поэтому присвоение ему имени на самой странице не очень хорошая идея, но я не знаю, как еще я могу привязать ширину и высоту страницы.

Я пытаюсь сделать следующее:иметь черную рамку (с непрозрачностью 0,8), покрывающую весь экран (включая элементы управления главной страницы).Кроме того, я хочу отобразить некоторые другие элементы управления.

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

Обновление : я только что понялЯ могу использовать класс ChildWindow, чтобы сделать это.Но мой оригинальный вопрос остается.

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Поместите в конструктор вашего элемента управления следующее, чтобы вы могли не называть его:

DataContext = this;
1 голос
/ 07 мая 2010

Мое общее решение этой проблемы - написание пользовательского поведения. Это не просто решение XAML, но оно дает вам гораздо больше гибкости.

Создайте поведение, которое ищет в VisualTree нужный элемент, а затем правильно устанавливает ширину всплывающего окна.

Это может быть немного сложнее, чем прямое связывание, но позволяет избежать всех проблем с именами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...