我想要一種動畫電影帶,其中只有一個字段在給定時刻可見。就像照相機中的電影膠片一樣 - 目前只有一個電影場放置在鏡頭下方,並準備進行照明。我試圖通過另一個網格來實現它。在下面的代碼中,「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:不要使用保證金的人們可以使用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> ...
嗨科林,作品像一個魅力;)非常感謝!你是對的,Canvas.Left是一個更好的方法。我切換到它,我創建了一個名爲CurrentFieldNumber的新自定義屬性,並使用了MultiBinding。解釋更多關於我的原始問題:我的動畫覆蓋了綁定! [解釋這裏](http://stackoverflow.com/questions/598139/oneway-binding-stops-working-after-the-target-manually-updated)所以現在我讓動畫運行在我的新的CurrentFieldNumber和一切都很好:)再次感謝你的整潔的例子!漢斯 – Hans 2011-02-05 23:11:13