绑定到Item ItemsControl的ActualHeight
我有两个独立的
ItemsControl
s并排出现。 ItemsControl
s绑定到相同的ItemsSource
,但它们以不同的方式显示数据。
左侧显示的每个项目很可能小于右侧的相同项目。这会导致问题,因为行不会排成一行,因此我需要左侧的项目绑定到右侧的项目。
ItemsControl ItemsControl
|Item 1 |Item 1
|Item 2 |Item 2
|Item 3 |
|Item 4 |Item 3
如您所见,右侧的第2项更大,因此它会抛弃对齐。因此,如果我可以将左边的项目2绑定到右边的项目2的ActualHeight
,问题就会得到解决。我怎样才能在XAML中做到这一点?
编辑:为了使事情变得更复杂,右边的ItemsControl
需要从右向左滚动,但两者都需要一起向上和向下滚动。基本上,左边的一个为右边的项目提供了各种标题。
没有找到相关结果
已邀请:
3 个回复
膝垫富顷
绑定,但是有很多解决方法。 Kent Boogaart在这个问题上的答案是我最喜欢的。它的作用是使用一个附加行为来侦听任何
的
事件,并相应地更新两个附加属性,宽度和高度。 以
为例,
可用于推入ViewModel的Height属性,如
Synkronize两个ScrollViewers 您可以使用
收听
财产的变化,也可以订阅
活动并致电
。例 XAML
事件处理程序背后的代码
ActualSizeBehavior
程琶
在两者上都是相同的,你可以在单个
中使用单个
和整行表示为两个部分(网格的两列),然后高度将自动对齐。您总是可以将它设计为看起来像是两个不同的part0ѭ但在技术上是一个的一部分。 另一种方法是,在ViewModel中添加一个Height属性(当然,自从向VM添加View依赖项后,设计不是很正确)。 TwoWay将高度绑定到left-itemsControl ItemContainerStyle的ActualHeight。在right-itemscontrol上将Height属性绑定到ItemsContainerStyle {One Way}的高度。所以两者都会同步。 基于您的更新“右侧需要滚动”的另一个想法: 使用单个ListView并在其中包含两列,其中两个GridViewColumn.CellTemplate包含两个DataTemplates。这个想法仍然需要第一列的列冻结。但这可能更棘手。 无论如何,我会采用第一种方法。
膛嵌墒缅欠