我正在尝试制作一种动画电影片段,其中在给定时刻只有一个字段可见。就像相机中的胶片一样 - 当前只有一个胶片场放置在镜头下方并准备被照亮。我尝试将其实现为一个带有另一个网格的网格。 “Film strip”在下面的代码中称为 pageContainer。在后面的代码中,我做了一个动画,它改变了 pageContainer 网格的 Margin 属性。工作完美,pageContainer 可以按照我的意愿很好地向左或向右滑动。例如:显示页码。 2 边距设置为 (-270,0,0,0) 而不是 (0,0,0,0)。这会将 pageContainer 移至左侧,并且只有第二个字段可见,而不是第一个字段。
然而,一旦我开始调整整个 UI 的大小,这种机制就会停止工作,用户可以看到两个页面(字段)之间的边框,而不仅仅是当前页面。如果我在 pageWidthConverter 上放置断点,则在调整整个 UI 大小时总会遇到该断点。如果我在 pageMarginConverter 中放置另一个断点,则在调整大小期间永远不会命中它。为什么?我想让 Margin 属性依赖于 BackgroundRectangle ActualWidth,就像我使用 Width 属性一样。但这是行不通的。为什么在调整窗口大小时动态设置宽度,但边距却不是?
PS:除了使用 Margin 之外,还可以使用 TranslateTransform。我尝试过但也没有成功。
如果有人可以提供帮助,我们将不胜感激。
干杯
汉斯
... <Grid Grid.Row="3" Grid.Column="1" Margin="0,-4,0,0" ClipToBounds="True">
<Grid x:Name="pageContainer"
Width="{Binding Converter={StaticResource pageWidthConvertor}, ElementName=BackgroundRectangle, Path=ActualWidth}"
Margin="{Binding Converter={StaticResource pageMarginConvertor}, ElementName=BackgroundRectangle, Path=ActualWidth}" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding ElementName=BackgroundRectangle, Path=ActualWidth}"/>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="{Binding ElementName=BackgroundRectangle, Path=ActualWidth}"/>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="{Binding ElementName=BackgroundRectangle, Path=ActualWidth}"/>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="{Binding ElementName=BackgroundRectangle, Path=ActualWidth}"/>
<ColumnDefinition Width="40"/>
</Grid.ColumnDefinitions> ...