Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何仅使用ViewModel代码在WPF中移动ItemsControl的选定项_C#_Wpf_Xaml - Fatal编程技术网

C# 如何仅使用ViewModel代码在WPF中移动ItemsControl的选定项

C# 如何仅使用ViewModel代码在WPF中移动ItemsControl的选定项,c#,wpf,xaml,C#,Wpf,Xaml,我目前正在从事一个项目,其中我有一个ItemsControl绑定到一个玩家列表,以显示记分牌。当列表更新,球员核心改变时,我希望球员滑到新位置 这已经可以在每个元素上使用TranslateTransform属性,但仅以15-20 FPS(每帧约50-70ms)的速度工作,因此您可以看到它不是流体。这是因为要重新绘制ItemsControl,我必须调用NotifyOfPropertyChange方法,以便它重新绘制自己,但它重新绘制所有元素 因为它只是一个显示板,我不能处理用户交互,但必须基于纯代

我目前正在从事一个项目,其中我有一个ItemsControl绑定到一个玩家列表,以显示记分牌。当列表更新,球员核心改变时,我希望球员滑到新位置

这已经可以在每个元素上使用TranslateTransform属性,但仅以15-20 FPS(每帧约50-70ms)的速度工作,因此您可以看到它不是流体。这是因为要重新绘制ItemsControl,我必须调用NotifyOfPropertyChange方法,以便它重新绘制自己,但它重新绘制所有元素

因为它只是一个显示板,我不能处理用户交互,但必须基于纯代码

所以我的问题是,有没有一种方法可以只重新绘制ItemsControl的特定元素,或者有没有另一种方法可以显示一个列表,让我可以逐个访问成员?

<Grid Width="500" Height="120">
        <Grid.RenderTransform>
            <TranslateTransform X="{Binding TransformHorizontal}" Y="{Binding TransformVertical}" />
        </Grid.RenderTransform>
</Grid>


这是我为绑定到元素属性TransformHorizontal和TransformVertical的每个元素使用的周围网格,我可以为每个元素分别设置TransformHorizontal和TransformVertical属性。

如果TransformHorizontal和TransformVertical属性引发PropertyChanged事件,TranslateTransform将自动更新项目位置,无需“重新绘制”整个ItemsControl。也就是说,在绝对位置绘制项目的常用方法是使用画布作为项目面板,如图所示。