我幾乎可以將整個問題都融入到問題主題中,但有趣的部分並不適合。所以上面問題的棘手部分是這樣的:綁定動畫屬性以點擊ItemsControl內的可視項目
我的動畫不適用於點擊的可視化子元素,而是應用到構成可視子元素的ItemsControl的父容器。 所以我的問題是爲數據綁定找到適當的「源」。
但是首先一些XAML: 這就是我想申請(裏面一個Storyboard資源)動畫:
<DoubleAnimation
Storyboard.Target="{x:Reference ItemsControlGrid}"
Storyboard.TargetProperty="(Canvas.Left)"
From="0" To="{Binding Source=Tile, Path=Width}"/>
有問題的部分是動畫的「」物權。 (忽略Path = Width,它只是一個我知道存在於綁定源的測試屬性)。 如果我使用硬編碼值,它已經可以工作。
「瓷磚」是我想要綁定到的DataTemplate控件的名稱。
它看起來像這樣:
<DataTemplate DataType="{x:Type local:Task}">
<Grid x:Name="Tile" MouseDown="Task_OnClick" MinWidth="200" Background="{StaticResource TileBackground}" Margin="7" RenderTransformOrigin="0.5,0.5" >
<Grid.Triggers>
<EventTrigger RoutedEvent="Grid.MouseDown">
<BeginStoryboard Storyboard="{StaticResource AnimLeave}"></BeginStoryboard>
</EventTrigger>
</Grid.Triggers>
...content
</Grid>
</DataTemplate>
ItemsControl的構成是這樣的:
<ScrollViewer>
<Canvas>
<Grid x:Name="ItemsControlGrid">
<ItemsControl x:Name="Taskboard" >
<ItemsControl.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Tasks, Source={x:Static ...secret}}"/>
<Button>
</Button>
</CompositeCollection>
</ItemsControl.ItemsSource>
據我所知,WPF這不起作用,因爲動畫應用到的父ItemsControl對動畫發起者(視覺小孩「瓷磚」)的「綁定上下文」完全丟失。
所以要summerize我最終想達到的目標:
我想動畫的「磚」項目,當我點擊它順利填滿整個可見ScrollViewer中。我嘗試通過同時調整Tile的大小,同時以某種方式移動父網格來實現該效果,即該tile的中心移動到scrollviewers中心。
總之:我要點擊「平鋪」順利打通到瓷磚的「詳細信息」查看(顯示完全不同的內容)
即使有一個完全不同的/更好的辦法來解決我的真實問題我仍然想知道如何完成數據綁定。
在此先感謝。我肯定會從希望即將到來的答案中再次學習。