【问题标题】:Silverlight4 DataTemplatesSilverlight4 数据模板
【发布时间】:2011-04-27 19:31:44
【问题描述】:

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

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

这在 SL4 中可以实现吗??

如果可以,如何实现??

【问题讨论】:

    标签: silverlight-4.0 datatemplate


    【解决方案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;
        }
    

    【讨论】:

    • 是的,这绝对有效。我的想法是以 mvvm 方式来做,而不需要任何代码。 :)
    【解决方案2】:

    是的。

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

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

    在您的项目模板中。

    【讨论】:

    • 感谢您的回复,但这如何让我决定应该选择哪个模板?
    • 您能否向我提供更多信息,说明您为什么需要此 DataTemplateSelector?或者,您可以只使用一个具有不同内部网格的模板,然后根据您的条件切换可见性。
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多