如何填充一个DataTemplate内部控制每当模板实例?(How to populate a co

2019-10-17 04:46发布

我有一个ItemsControl一个DataTemplate描述了如何显示每个项目。 我想拥有的DataTemplate内的用户界面是一个坏适合通过XAML来建模 ,我将不得不填充一个Grid中的代码。

我如何获得此代码每次运行我的时间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,请回答这个问题 ,而不是)

Answer 1:

您可以轻松地勾Loaded的事件Grid

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


文章来源: How to populate a control inside a DataTemplate whenever the template is instantiated?