2009-08-24 12 views
0

私は現在、ペイントのようなWPFアプリケーション用のクラスを作成しようとしています。 LineMovementクラス(StartPointからEndPointまでのライン)とPathMovement(PointCollectionタイプのプロパティポイントで指定されたすべてのポイントを通るライン)をベースにしなければなりません。これらのクラスはControlから継承し、ControlTemplateを通して外観を取得します。foreachを使用したWPF ControlTemplate?

ここで、PointMoversをControlTemplateに追加します。これらは、いずれかのMovementクラスの各ポイントに存在する小さな視覚的要素でなければなりません。根本的なポイントをドラッグするための一種のグリップメカニズムになるはずです。

問題はもちろん、私はControlTemplateに可変数の要素を作成する方法を知らないということです。

<Style x:Key="{x:Type mov:PathMovement}" TargetType="{x:Type mov:PathMovement}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type mov:PathMovement}"> 
       <Grid> 
        <Polyline Points="{TemplateBinding Points}" /> 
        <!-- interesting part start --> 
        <foreach loopvariable="Point" in="{TemplateBinding Points}"> 
         <PointMover Point="Point" /> 
        </foreach> 
        <!-- interesting part end --> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

これは可能でしょうか?あなたは働くことができるという別のアプローチがありますか?

ありがとうございます!

答えて

1

ItemTemplateと一緒にItemsControlを使用してください:あなたのユースケースの音によって

<ItemsControl ItemsSource="{Binding Points}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <!-- rendered for each point --> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

を、あなたもAdornerLayerの上に読むことをお勧めします。

+0

いいですね。私はそれを試みるつもりです。 AdamnerLayersのアドバイスについて:XAMLで指定する方法がないので、XAMLとコードを混用しないようにします。 – chrischu

関連する問題