2015-01-13 3 views
0

Итак, я создаю пользовательский интерфейс в Visual Studio, и из-за всех повторяющихся элементов я использую много элементов в разделе «Ресурсы» моего пользовательского контроля. То, что я пытаюсь сделать, это перебрать элементы, используя другой файл StaticResource в качестве шаблона для элементов.XAML и Caliburn.Micro MVVM: ресурс стиля, ссылающийся на другой ресурс стиля в шаблоне данных

Проблема в том, что Datatemplate, конечно, переключает DataContext на элементы, которые он выполняет. Поэтому я пытаюсь понять, как получить контекст статических ресурсов, который находится в контексте UserControl. Я рассматривал использование относительного источника, но потом понял, что StaticResource не имеет этого параметра и позволяет вам доступ к ресурсам контекста.

Любые предложения по поводу того, что делать здесь?

<Style TargetType="ItemsControl" x:Key="BeneficiaryList"> 
     <Setter Property="ItemTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <Expander Header="{Binding Name_1}"> 
         <Expander.Resources> 
          <utils:BindingProxy x:Key="proxy" Data="{Binding}"/> 
         </Expander.Resources> 
         <!--Attempt at a proxy binding to access another style resource in the file. Does not work.--> 
         <ContentControl Style="{StaticResource proxy.Person_Template}"/> 
        </Expander> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Спасибо!

ответ

0

Вы просто укажете имя пользователя UserControl, например. "root", а затем связываются с использованием ElementName:

<ContentControl Style="{Binding ElementName=root,Path=DataContext.WhateverProperty}" /> 
+0

Другой вопрос, как бы я добраться до 'Style' элемента в элемент' '? Это так просто, как просто использовать «Path = DataContext.Resources.Person_Template»? Или есть другой путь доступа, который мне нужно использовать? – Saxophlutist

+0

Редактировать: Я понял это. Это должно быть 'Path = Resources [Person_Template]' – Saxophlutist

+0

Не могли бы вы использовать {StaticResource Person_Template} вместо привязки? – Frank

Смежные вопросы