我正在尝试使用带有绑定的儿童收藏集编写画布。它不能像其他控件一样完成,互联网上有许多解决方案如何在 WPF 中完成,但是它们都不适用于 UWP App,而且可能性有限。
我现在拥有的是 ItemsControl 被覆盖以拥有 Canvas 控件而不是默认的 StackPanel。这是我的代码:
<ItemsControl x:Name="Railer" ItemsSource="{x:Bind ViewModel.ItemsToShowInCanvas, Mode=TwoWay, Converter={StaticResource OtoO}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas x:Name="MyCanvas"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="v:SubPanelViewModel">
<Grid>
<v:SubPanelView Width="100" Height="{Binding ActualHeight, ElementName=MyCanvas}"
ManipulationDelta="TextBlock_ManipulationDelta" ManipulationMode="All"
ManipulationCompleted="SubPanelView_ManipulationCompleted"
/>
<Grid.RenderTransform>
<TranslateTransform X="{Binding Left, Mode=OneWay}" Y="{Binding Top, Mode=OneWay}"/>
</Grid.RenderTransform>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
SubPanelView 是我的自定义控件,它的数据上下文是 SubPanelViewModel,其中包含我绑定到查看的 Left、Top 和 ZIndex 属性。使用 RenderTransform 可以将我的元素设置在我想要的位置 - 这是我通过搜索互联网找到的唯一方法,可以像使用 Canvas.Left/Top 属性一样定位它。
我不能做的是正确设置 ZIndex 属性 - 不管我尝试什么。原因是我的项目不是 Canvas 的直接子项。我只是想在我操作它的时候把它放在前面。
我应该放弃并在代码后面做所有事情,还是有什么方法可以实现我想要的?