2016-06-14 15 views
0

Windows 8.1 Metroアプリケーションでは、ビューモデルの図形のコレクションをMainPage.xamlにバインドしようとしています。それぞれの図形はLeft,Top、さらにPathDataとなります。RectangleGeometryには、対応する位置にキャンバス内に描画したい矩形が含まれています。キャンバス内のシェイプ/コントロールの絶対座標をバインドする方法

これはXAMLです:

<Grid Background="Black"> 
    <ItemsControl ItemsSource="{Binding Shapes}"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <Canvas /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemContainerStyle> 
      <Style TargetType="ContentPresenter"> 
       <Setter Property="Canvas.Top" Value="{Binding Top}"/> 
       <Setter Property="Canvas.Left" Value="{Binding Left}"/> 
      </Style> 
     </ItemsControl.ItemContainerStyle> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Path Data="{Binding PathData}" Stroke="White" StrokeThickness="3" Canvas.Left="{Binding Left}" Canvas.Top="{Binding Top}"/> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</Grid> 

データコンテキストが設定され、正常に動作しています。私は、MainViewModelからシェイプを取り込み、四角形が画面に表示されますが、問題は、正確にLeftTopの位置に置くことができません。Canvasの位置です。 )。

IはPathCanvas.LeftCanvas.Top(私が試し明らか法)結合ならびに同じことを行うことになっているStyle(Iは、WPFの例から求め方法)でItemContainerStyle設定の両方を試みました。しかし、これらのどちらもうまくいきません(私は参照のためにxamlに両方のメソッドを追加しました)。

私は間違って何をしていますか、どのように矩形を対応する位置に表示させるのですか?


編集:私の質問は、私は答えは動作しません受け入れているため、Windowsのメトロ/ UWPをターゲットにしていますことを除いて this one for WPFと同じです。

答えて

2

代わりにTransformにバインドすることで問題を回避できました。

​​
関連する問題