我的View基本上是这样设置的:
<Grid>
<ViewBox>
<Grid>
<ItemsControl ItemsSource="{Binding MyItems}"
ItemTemplate="{Binding Source={StaticResource MyItemsDataTemplate}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
</ViewBox>
</Grid>
此处使用的DataTemplate可以简化为:
<DataTemplate x:Key="AreaItemDisplayDataTemplate">
<Canvas Grid.ZIndex={Binding Z}>
<Grid>
// an shape is displayed here...
</Grid>
</Canvas>
我现在希望ZIndex绑定到各个项目的Z属性。当我调试代码时,我也可以看到,当我期望它时,访问Z属性getter(每当我为它举起propertychanged事件时),所以我假设绑定工作正常。
但是,ZIndex没有按预期工作。绑定到该值对实际显示的Z Order没有影响。这个代码我哪里错了?
答案 0 :(得分:10)
DataTemplate
的内容包含在ContentPresenter
中,因此Canvas
中的DataTemplate
不是ItemsPanel
{{的直接子项1}}。这就是Grid
属性不执行任何操作的原因。
将ZIndex
ZIndex
移至Binding
,它应该有效。
ItemContainerStyle