Tôi phát triển một ứng dụng trong WPF bằng cách sử dụng mẫu MVVM. Tôi đang hiển thị biểu đồ được định hướng, với các nút và liên kết (xem hình sau).Hoạt ảnh động sử dụng bảng phân cảnh
http://free0.hiboox.com/images/1110/diapo1c36a4b95802846b8553d2fe9b9e6639.png?26
Người dùng có thể kéo và thả các nút từ một "tế bào" khác. Khi người dùng thả một nút, vị trí của nó được thay đổi để căn chỉnh nó trong lưới. Những gì tôi muốn làm, là animate nút khi vị trí của nó được điều chỉnh trong suốt quá trình căn chỉnh.
Các nút, liên kết và dấu phân cách là tất cả các mục được hiển thị trong một ItemsControl. Biểu diễn của chúng được kiểm soát với một số DataTemplates, và vị trí của chúng với Styles.
Những gì tôi đang làm là như sau:
private void Align() {
// Computations...
TX = ... //Target X is set
TY = ... //target Y is set
X = TX;
Y = TY; // X and Y setters fire PropertyChanged
}
<Style x:Key="NodeViewStyle">
<Setter Property="Canvas.Left" Value="{Binding X, Mode=TwoWay}"/>
<Setter Property="Canvas.Top" Value="{Binding Y, Mode=TwoWay}"/>
Những gì tôi muốn làm là như sau:
private void Align() {
// Computations...
TX = ...
TY = ... //TX and TY setters fire PropertyChanged
}
<Style x:Key="NodeViewStyle">
<Setter Property="Canvas.Left" Value="{Binding X, Mode=TwoWay}"/>
<Setter Property="Canvas.Top" Value="{Binding Y, Mode=TwoWay}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding State}" Value="UPDATEPOS">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="{Binding TX}" Duration="0:0:1"
Storyboard.TargetProperty="(Canvas.Left)"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
Nhưng điều này không làm việc trong thời gian chạy, vì tôi không thể liên kết với "Để "tài sản của DoubleAnimation của tôi (đó là một Freezable).
Cách đơn giản nhất để thực hiện hoạt ảnh động như vậy là gì? Hoạt hình thuộc tính "X" thông qua bộ hẹn giờ trực tiếp trong chế độ xem?
bạn có tìm thấy giải pháp tương tự MVVM cho điều này không? Nó sẽ là tuyệt vời nếu bạn có thể đăng một đoạn mã xaml của bạn (cụ thể hơn là vấn đề ràng buộc 'Tới') của giải pháp của bạn. Cảm ơn – Peanut