2016-04-07 23 views
1

這是我的代碼隱藏:移位碼的碼後面在WPF視圖模型

 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畫布控件的名稱。當前的代碼使我能夠獲取畫布內圖像的位置。這是在代碼隱藏中實現的。問題是,我們如何以MVVM方式獲取圖像的位置(使用命令啓動進程)?

回答

0

我們如何以MVVM方式獲取圖像的位置(使用該命令啓動進程)?

不需要命令,只需將每個畫布所需的每個屬性綁定到VM即可。然後在需要時提取獲取圖像所需的目標畫布屬性。

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> 

通過這種方式,你將有機會獲得您的CanvasViewModel,您可以執行後面的命令中的代碼。

+0

您將'ElementName'設置爲「canvas」,但Canvas'沒有名稱......是一個錯字? – OmegaMan

+0

在它所說的問題中:「A'canvas'是我在XAML中的Canvas控件的名稱」。這是名字。 –

+1

夠公平的,然後命名您的示例畫布相同。對?只是要清楚。 :-) – OmegaMan