绑定不同UserControl

时间:2016-01-19 12:24:06

标签: wpf xaml user-interface layout element-binding

我有一个显示多声道信息的屏幕的布局(类似于音轨):

  1. MultiChannelPlotterControl底部包含一个HorizontalRuler实例,包含N UniformGrid个实例的SingleChannelPlotterControl个实例;
  2. 每个SingleChannelPlotterControl都有一个VerticalRuler左对齐的实例;
  3. enter image description here

    问题是:

    1. 每个垂直标尺可以有不同的宽度,但我希望它们都能拉伸到最大宽度,以便它们适合,但由于它们位于不同的控件上,我不能将它们放在同一个容器中(另一个{{ 1}},例如。现在,如果我决定将它们放在一个不同的容器中,它们将不再是UniformGrid的一部分;
    2. 左下角有一个矩形区域。应该具有与VerticalRuler相同的宽度,但它在布局树中仍然更高。它目前是空的,但我可以在那里放一些东西并绑定它的宽度,例如;
    3. 所以问题是:

        

      我如何布局/元素绑定/设置这些控件的样式,使垂直标尺的右边缘与水平标尺的左边缘保持一致(适合最宽的标尺)

      编辑: 我想我可以在SingleChannelPlotterControl上创建一个“LeftPanelWidth”DependencyProperty,并在其getter上使用一些MultiChannelPlotterControl向导来获取内部每个VerticalRuler的ActualWidths,但是我如何选择最大宽度并设置其他人的宽度

2 个答案:

答案 0 :(得分:0)

您可以尝试在列定义中使用SharedSizeGroup属性。您必须在正确的父容器上设置IsSharedSizeScope = True。

答案 1 :(得分:0)

我最终通过消除SingleChannelPlotterControl类来解决问题。

相反,我使用两个并排UniformGrid个实例(作为两个ItemsPanel个实例的ItemsControl),将ItemsSource设置为相同{{1}在XAML中声明。

然后,对于每个CollectionViewSource,我声明了一个不同的ItemsControl,左边的一个包含ItemTemplate,另一个用同样的方式显示信号VerticalRuler以前 - 除了它不再包含标尺。