0

我正在尝试使用带有绑定的儿童收藏集编写画布。它不能像其他控件一样完成,互联网上有许多解决方案如何在 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 的直接子项。我只是想在我操作它的时候把它放在前面。

我应该放弃并在代码后面做所有事情,还是有什么方法可以实现我想要的?

4

0 回答 0