1

我有ItemsControl一个DataTemplate描述如何显示每个项目的说明。我想在 DataTemplate 中拥有的 UI不适合由 XAML 建模,我将不得不Grid在代码中填充一个。

如何在每次DataTemplate实例化 my 时运行此代码,以便我有机会填充无法在 XAML 中表达的位?


为了扩展一点,考虑一个简化的例子。虚拟机如下所示:

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/>in 代码而只使用 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 回答