我正在使用一个ItemsControl,其中ItemsPanel设置为Canvas(有关更多背景信息,请参见此问题)。 ItemsControl按照我的要求执行,并且在将子元素手动放入ItemsControl.Items时非常有效:
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Items>
<Button Canvas.Left="500" Content="Button Text" />
</ItemsControl.Items>
</ItemsControl>
注意按钮上的Canvas.Left属性。这很好用,按钮距离ItemsControl左侧500像素。太棒了!但是,当我将ItemsSource绑定到List时,Canvas.left没有任何效果:
<ItemsControl ItemsSource="{Binding Elements}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Canvas.Left="500" Content="Button Text" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
在运行时检查应用程序时,我看到了一个区别。容器ContentPresenter已添加在Canvas和按钮之间。
我如何在ContentPresenter本身上设置Canvas.Left属性?还是有其他方法可以解决这个问题?
感谢大家!