如何在实例化模板时如何在DataTemplate中填充控件?

时间:2012-08-25 11:33:36

标签: c# wpf xaml datatemplate

我有一个ItemsControl,其中DataTemplate描述了如何显示每个项目。我想在DataTemplate中使用的UI是bad fit to be modelled by 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,请回答this question而不是

1 个答案:

答案 0 :(得分:2)

您可以轻松地将Loaded事件挂钩到Grid

<Grid Loaded="Grid_Loaded">
private void Grid_Loaded(object sender, ....)
{
    var grid = (Grid)sender;
    var item = (MyItem)grid.DataContext;
    //Go time
}