cod*_*oop 16 wpf canvas itemscontrol
我正在使用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>
Run Code Online (Sandbox Code Playgroud)
注意Button上的Canvas.Left属性.这就像魅力一样,Button位于ItemsControl左侧500像素的位置.大!
但是,当我定义与List的ItemsSource绑定时,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>
Run Code Online (Sandbox Code Playgroud)
通过在运行时检查应用程序,我看到了一个区别.在Canvas和按钮之间添加了容器ContentPresenter.
如何在ContentPresenter本身上设置Canvas.Left属性?或者有另一种方法可以解决这个问题吗?
谢谢大家!
Lia*_*amV 25
可以使用ItemContainerStyle设置Canvas.Left属性:
<ItemsControl ItemsSource="{Binding Elements}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="Button Text" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Left" Value="500" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
我想到了几种解决方案:
| 归档时间: |
|
| 查看次数: |
9279 次 |
| 最近记录: |