将代码代码转移到wpf

时间:2016-04-07 11:48:53

标签: wpf mvvm icommand

这是我的代码隐藏:

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            foreach (FrameworkElement fe in canvas.Children)
            {
                double top = (double)fe.GetValue(Canvas.TopProperty);
                double left = (double)fe.GetValue(Canvas.LeftProperty);
            }
        }

A'帆布'是XAML中我的Canvas控件的名称。当前代码使我能够在画布中获取图像的位置。这是在代码隐藏中实现的。问题是,我们如何以MVVM方式获取图像的位置(使用命令启动该过程)?

2 个答案:

答案 0 :(得分:0)

  

我们如何以MVVM方式获取图像的位置(使用命令启动该过程)?

不需要命令,只需将每个画布的每个所需属性绑定到VM即可。然后在需要时提取获取图像所需的目标画布属性。

答案 1 :(得分:0)

一个好的解决方案是使用XAML行为:

<Canvas x:Name="Canvas">
 <i:Interaction.Triggers>
     <i:EventTrigger EventName="Click">
          <i:InvokeCommandAction Command="{Binding YourCommand}" 
                                 CommandParameter="{Binding ElementName=canvas}"/>
      </i:EventTrigger>
  </i:Interaction.Triggers> 
</Canvas>

通过这种方式,您可以访问Canvas中的ViewModel,并且可以执行命令中的代码。