Silverlight 4.0 Silverlight4数据模板

Silverlight 4.0 Silverlight4数据模板,silverlight-4.0,datatemplate,Silverlight 4.0,Datatemplate,我有一个ItemsControl,它的ItemsSource绑定到一个集合,另外还有一个ItemTemplateSelector集 它工作得很好,但是DataTemplateSelector只允许我访问ItemsSource绑定的项,但是我想使用父DataContext来决定应该使用哪个项模板 这在SL4中可以实现吗 如果是这样的话,如何实现呢?是的 将布局根命名为“LayoutRoot”,然后可以执行以下操作 <TextBlock Text="{Binding DataContext.S

我有一个ItemsControl,它的ItemsSource绑定到一个集合,另外还有一个ItemTemplateSelector集

它工作得很好,但是DataTemplateSelector只允许我访问ItemsSource绑定的项,但是我想使用父DataContext来决定应该使用哪个项模板

这在SL4中可以实现吗

如果是这样的话,如何实现呢?

是的

将布局根命名为“LayoutRoot”,然后可以执行以下操作

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


在您的项目模板中。

感谢您的回复@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;
    }

感谢您的回复,但这如何让我决定应该选择什么样的模板呢?您能为我提供更多信息说明为什么需要这个DataTemplateSelector吗?或者,您可以只使用一个具有不同内部网格的模板,然后根据您的条件切换可见性。是的,这确实有效。我的想法是以mvvm的方式进行,不需要任何代码