Silverlight4 DataTemplates - PullRequest
       11

Silverlight4 DataTemplates

0 голосов
/ 27 апреля 2011

У меня есть ItemsControl с его ItemsSource, привязанным к коллекции, кроме того, у меня есть набор ItemTemplateSelector.

Он работает хорошо, однако DataTemplateSelector позволяет мне получать доступ только к элементам, связанным с ItemsSource, однако я хочу использоватьРодительский DataContext для принятия решения о том, какой шаблон элемента следует использовать.

Достижимо ли это в SL4 ??

Если да, то как его достичь ??

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

Спасибо за ваш ответ @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;
    }
0 голосов
/ 28 апреля 2011

Да, это так.

Назовите свой корень макета 'LayoutRoot', тогда вы можете сделать

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

в своем шаблоне элемента.

...