Wpf 在DataTemplate内剪裁画布的内容

Wpf 在DataTemplate内剪裁画布的内容,wpf,xaml,datatemplate,Wpf,Xaml,Datatemplate,我在画布中有一行作为WPF窗口上的根元素,看起来很好。若我把它放到ItemsControl的DataTemplate中,那个么StackPanel会将该行裁剪为ItemsPanelTemplate。我已经检查过其他面板,比如Grid as a ItemsPanelTemplate,没有剪辑内容。我知道Canvas无论如何都不会剪辑内容。这仅出现在运行时,而不是设计时。问题的根源是什么 <ItemsControl ItemsSource="{Binding ...}"> <

我在画布中有一行作为WPF窗口上的根元素,看起来很好。若我把它放到ItemsControl的DataTemplate中,那个么StackPanel会将该行裁剪为ItemsPanelTemplate。我已经检查过其他面板,比如Grid as a ItemsPanelTemplate,没有剪辑内容。我知道Canvas无论如何都不会剪辑内容。这仅出现在运行时,而不是设计时。问题的根源是什么

<ItemsControl ItemsSource="{Binding ...}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel ClipToBounds="False" 
                        Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Canvas Width="100"
                    Height="100" 
                    ClipToBounds="False">
                <Line X1="0"
                      Y1="0"
                      X2="-10"
                      Y2="10"
                      Stroke="DeepPink"
                      StrokeThickness="10" />
            </Canvas>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>


如果看不到您想要的图片,很难判断,但是我的最佳猜测是负X2值导致了您提到的“剪辑”效应。当
Canvas
是根元素时,它将使画布/线居中,因此不明显,但当它位于
StackPanel
中时,东西会对齐到左侧,从而导致剪裁明显。如果是这种情况,请更改您的X/Y值,这样您就不会使用负边距,例如
X1=“10”Y1=“10”X2=“0”Y2=“20”
谢谢您的快速响应,Rachel。这对我来说太难了。我想看到时间线规则与下面X轴上的事件同步。相反,我可以将StackPanel作为ItemsPanelTemplate移动以避免剪切,但这看起来像是一种解决方法。看来剪辑是我的厄运。很抱歉,如果没有看到您想要的图片,我的英语很难说,但是我最好的猜测是负X2值导致了您提到的“剪辑”效应。当
Canvas
是根元素时,它将使画布/线居中,因此不明显,但当它位于
StackPanel
中时,东西会对齐到左侧,从而导致剪裁明显。如果是这种情况,请更改您的X/Y值,这样您就不会使用负边距,例如
X1=“10”Y1=“10”X2=“0”Y2=“20”
谢谢您的快速响应,Rachel。这对我来说太难了。我想看到时间线规则与下面X轴上的事件同步。相反,我可以将StackPanel作为ItemsPanelTemplate移动以避免剪切,但这看起来像是一种解决方法。看来剪辑是我的厄运。对不起,我的英语不好