我目前正在开发一个GUI,用于Ising模型(德语维基百科,因为只有右侧的图片真正重要),该模型应由约200x200个自旋元素组成。 我是这样实现它的:
<UniformGrid Name="grid" .... />
在代码中,我为每个旋转添加了一个矩形,并在后台更新,以便更改旋转的值。但这种方法运行非常缓慢,因此我进行了更改,使用了绑定(Binding)。
<ItemsControl Name="IsingLattice" ItemsSource="{Binding Spins}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Name="grid" ...
...
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Rectangle Fill={Binding Color} ...
但这个方法非常慢。我已经尝试了三天来调试和改进它,但迄今为止没有成功。
现在的问题是:我的方法错了吗?如果是,我应该使用什么代替?如果不是,我该如何提高性能?
如果相关,我将更新此帖子,介绍我模型实现的一些细节。
编辑:可以通过与元素交互来更改单个旋转。虽然可能不那么难,但可以通过在实际图形上方放置一个透明层来完成。