2012-08-25 33 views
1

我有一個ItemsControlDataTemplate描述如何顯示每個項目。我想在DataTemplate中使用的UI是bad fit to be modelled by XAML,我將不得不在代碼中填充Grid如何在模板實例化時在DataTemplate中填充控件?

如何在每次執行我的DataTemplate實例時運行此代碼,以便我有機會填充無法在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/>但只使用XAML,請回答this question代替)

回答

2

您可以輕鬆地勾上GridLoaded事件。

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