画布位置(x,y)

时间:2013-11-12 13:47:13

标签: c# wpf canvas

我有一个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>

感谢。

2 个答案:

答案 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);
};