(wpf)项目控制画布中的移动动画

rur96b6h  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(116)

我有一个清单,比如:

class MyBox
{
    public int X{set;get;} //X binding ok ,this just example
    //...
}
List<MyBox> boxes{set;get;}

字符串
我用列表创建Button,如:

<Style x:Key="boxTemplate" TargetType="ItemsControl">
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate>
                        <Canvas />
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>

            <Setter Property="ItemContainerStyle">
                <Setter.Value>
                    <Style TargetType="ContentPresenter">
                        <Setter Property="Canvas.Top" Value="{Binding Y}" />
                        <Setter Property="Canvas.Left" Value="{Binding X}" />
                        <Setter Property="ContentTemplate">
                            <Setter.Value>
                                <DataTemplate>
                                    <Button />
                                </DataTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </Setter.Value>
            </Setter>
        </Style>


有用途:

<itemscontrol itemsSource="{Binding boxes}" Style="{StaticReSource boxTemplate}" />


问题是:当MyBox.X发生变化时,如何创建移动动画?
谢谢你,谢谢
编辑:
我尝试使用renderTransform.TranslateTransform,这个工作,但移动距离是错误的!

vq8itlhq

vq8itlhq1#

我自己治好了。我创建了一个MoveX值,用于计算动画从和到的移动:

class MyBox
{
    int X {set;get;} //bind to xmal
    int MoveX{set;get;} //not bind,used to move
}

字符串
然后,在移动动作之后(其中MoveX被改变,将动画从=旧MoveX移动到=新Movex),我设置MyBox.X = 0,并且,我不知道为什么,移动动画工作得很好。

相关问题