我有一个ItemsControl,它有一个集合源,这些项目出现在画布上,我可以用鼠标事件移动它们,如何保存项目的位置(x,y)?
这是我的代码:
<ItemsControl x:Name="icTables" Padding="0,30,0,0" Margin="249,88,0,115" Width="737" HorizontalAlignment="Left" FontWeight="Bold" BorderBrush="#FF6C6C6C" BorderThickness="1">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<jas:DragCanvas x:Name="drCanvas"></jas:DragCanvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ToggleButton x:Name="btnTable" Foreground="#ff252526" Width="75" Height="75">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding TableNo}" FontSize="14" HorizontalAlignment="Center" Foreground="#FFECECEC"/>
</StackPanel>
</ToggleButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
感谢。
答案 0 :(得分:0)
您既可以预览Canvas中的所有项目,检索它们的Left和Top值并存储它们,也可以在Canvas.Left和Canvas.Top属性之间进行TwoWay数据绑定,并在Item ViewModels和store中进行2个匹配的属性那里的价值观。
答案 1 :(得分:0)
可能你应该扩展DragCanvas,当引发了drag done事件时,你应该将位置信息保存到item(通过附加的依赖属性)。
drCanvas.DragCompleted +=(s,e)=>
{
var pos = Mouse.GetPosition(this);
ToggleButton.SetValue(PositionAttachedDependencyProperty,pos);
};