Silverlight4 DataTemplates

时间:2011-04-27 19:31:45

标签: silverlight-4.0 datatemplate

我有一个ItemsControl,其ItemsSource绑定到一个集合,另外我有一个ItemTemplateSelector集。

它运行良好,但DataTemplateSelector只允许我访问ItemsSource绑定的项目,但是我想使用Parents DataContext来决定应该使用哪个项目模板。

这是否可以在SL4中实现?

如果是这样,怎么可能实现?

2 个答案:

答案 0 :(得分:1)

感谢您对@Xin的回复,但我设法通过执行以下操作解决了我的问题。

        private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        DataTemplate dt = null;

        switch ((DataContext as PlanViewModel).Plan.Status)
        {
            case Infrastructure.Services.Web.PlanStatus.Appraisal:
                dt = (DataTemplate)this.Resources["Appraisal"];
                break;
            case Infrastructure.Services.Web.PlanStatus.Maintenance:
                dt = (DataTemplate)this.Resources["Maintenance"];
                break;
            case Infrastructure.Services.Web.PlanStatus.Setting:
                dt = (DataTemplate)this.Resources["Setting"];
                break;
        }

        itemsControl1.ItemTemplate = dt;
    }

答案 1 :(得分:0)

是的。

将您的布局根命名为“LayoutRoot”,然后您可以

<TextBlock Text="{Binding DataContext.SomeTextInParent, ElementName=LayoutRoot}" />

在商品模板中。