1

各アイテムの表示方法を説明しItemsControlたがあります。DataTemplateDataTemplate内に配置したいUIは、XAMLでモデル化するには不適切であり、コードに入力する必要がありGridます。

インスタンス化されるたびにこのコードを実行してDataTemplate、XAMLで表現できなかったビットを入力する機会を得るにはどうすればよいですか?


少し拡張するために、単純化された例を考えてみましょう。VMは次のようになります。

class MyItem
{
    public string Name { get; set; }
    public MyGrid Grid { get; set; } // describes a complex grid-like model
}

このDataTemplateように見えます:

<DataTemplate>
    <TextBlock Text="{Binding Name}"/>
    <Grid/>
</DataTemplate>

これ<Grid/>は、に基づいてコードに入力したいものですMyItem.Grid。これどうやってするの?

<Grid/>(コードに入力するのではなく、XAMLを使用するだけでよいと言う場合は、代わりにこの質問に答えてください)

4

1 に答える 1

2

Loadedでイベントを簡単にフックできますGrid

<Grid Loaded="Grid_Loaded">
private void Grid_Loaded(object sender, ....)
{
    var grid = (Grid)sender;
    var item = (MyItem)grid.DataContext;
    //Go time
}
于 2012-08-25T13:02:18.363 に答える