У меня есть следующий макет для экрана отображается многоканальной информацией (по аналогии с звуковыми дорожками):Связующих свойства макета различного UserControls
MultiChannelPlotterControl
содержит одинHorizontalRuler
экземпляра на дне иUniformGrid
содержащего NSingleChannelPlotterControl
экземпляры ;- У каждого
SingleChannelPlotterControl
был один экземплярVerticalRuler
Выравнивание слева;
Проблемы:
- Каждая вертикальная линейка может иметь различную ширину, но я хотел бы их всех, чтобы растянуть до наибольшей ширины, чтобы они могли поместиться, но так как они находятся на разных элементах управления, я не могу поместить их в один и тот же контейнер (например,
UniformGrid
. Теперь, если я решил собрать их в другом контейнере, они больше не будут частьюSingleChannelPlotterControl
; - В левом нижнем углу находится прямоугольная область. Предполагается, что она имеет ту же ширину VerticalRuler (s), но она еще больше в дереве макета. В настоящее время он пуст, но я могу что-то там наложить и привязать его ширину, например;
Так что вопрос:
Как я мог Layout/Element-BIND/Стилю этих элементов управления, так что правый край вертикальных линеек продолжают выровнен друг к другу (фитинг широчайших один) и с левым краем горизонтального правителя?
EDIT: Я предполагаю, что я мог бы создать «LeftPanelWidth» DependencyProperty на MultiChannelPlotterControl
, и на его использование геттерного некоторые VisualTreeHelper
колдовство, чтобы получить ActualWidths для каждого VerticalRuler внутри, но как бы я выбрал самую большую ширину и установите ширина других?
Спасибо за ваш ответ! У меня нет определения столбца. Контейнер элементов управления SingleChannelPlotter представляет собой UniformGrid с одним столбцом. Каждый LayoutRoot элемента управления SingleChannelPlotter является DockPanel, первым дочерним элементом которого является элемент управления VerticalRuler. Таким образом, каждый VerticalRuler имеет свою собственную Ширину и не знает о существовании своих «братьев и сестер».То, что я хочу, - это просто способ связать их все вместе, чтобы получить «видимый эффект» столбца. – heltonbiker
Тогда, возможно, самым простым способом было бы заменить DockPanel сеткой (вы должны иметь возможность получить тот же самый макет). Затем вы сможете определить первый столбец с помощью SharedSizeGroup. Если вам нужна дополнительная помощь, просто вставьте свой код xaml, чтобы я мог помочь вам сделать то, что вы хотите. – Jams