ここでのタイトルの重要な点は、listviewitem のデータ テンプレートに含まれるオブジェクト、具体的にはキャンバスを取得したいということです。
ViewModel プロパティ MySimpleDataにintの ObservableCollection があります。各 int にはキャンバスが関連付けられています。基本的に、リストビューを使用して「写真」の配列を表示しています。ユーザーは、「キャンバス」の内容を変更するボタンをクリックできます。ただし、1 つの画像オブジェクトで複数のフレームが保持される可能性があるため、それらをキャンバスに保存するのではなく、開始インデックスと期間を指定して別の場所に保存します。リストビューで各キャンバスを手続き的に生成したいと思います。各インデックスのキャンバスを取得するにはどうすればよいですか?
私は次のようなものを探しています:
MyListView.Items.(Related-DataTemplate).(Related-Canvas)
私の目標は、基本的にすべてのキャンバスをクリアし、必要に応じて再描画/更新することです。これはモックアップ/デモなので、解決策が少しハッキリしていてもかまいません。十分に機能し、独自のコントロールを作成する必要がないものが必要なだけです。
私の意図は、基本的に MyListView.items call, related-canvas.clear(); を反復することです。次に、そのキャンバスの画像オブジェクトに対して related-canvas.addChild(Relevant-Picture-Object); を呼び出します。
それが役立つ場合に備えて、これが私のxamlです。
<ListView Name="MyListView"
ItemsSource="{Binding MySimpleData}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Column1"
DisplayMemberBinding="{Binding}"/>
<GridViewColumn Header="Column2-Canvases"
Width="{Binding DataContext.CanvasWidth, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Canvas
Width="{Binding DataContext.CanvasWidth, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
Height="{Binding DataContext.CanvasHeight, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
Background="LightSlateGray"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
どんなアイデアでも大歓迎です。
乾杯。