Доступ к родительскому DataContext из DataTemplate

У меня есть ListBox , который привязывается к дочерней коллекции в ViewModel. Элементы списка оформлены в виде таблицы данных, основанной на свойстве родительской ViewModel:

<Style x:Key="curveSpeedNonConstantParameterCell">
   <Style.Triggers>
      <DataTrigger Binding="{Binding Path=DataContext.CurveSpeedMustBeSpecified, 
          ElementName=someParentElementWithReferenceToRootDataContext}" 
          Value="True">
          <Setter Property="Control.Visibility" Value="Hidden"></Setter>
      </DataTrigger>
   </Style.Triggers>
</Style>

Я получаю следующую ошибку вывода:

System.Windows.Data Error: 39 : BindingExpression path error: 
 'CurveSpeedMustBeSpecified' property not found on 
   'object' ''BindingListCollectionView' (HashCode=20467555)'. 
 BindingExpression:Path=DataContext.CurveSpeedMustBeSpecified; 
 DataItem='Grid' (Name='nonConstantCurveParametersGrid');
 target element is 'TextBox' (Name=''); 
 target property is 'NoTarget' (type 'Object')

Поэтому, если я изменю выражение привязки на "Path = DataContext.CurrentItem.CurveSpeedMustBeSpecified « это работает, но только до тех пор, пока текст данных родительского пользовательского элемента управления является BindingListCollectionView . Это недопустимо, поскольку остальная часть пользовательского элемента управления автоматически связывается со свойствами CurrentItem в BindingList .

Как указать выражение привязки внутри стиля, чтобы оно работало независимо от того, является ли родительский контекст данных представлением коллекции или отдельным элементом?

101
задан akjoshi 30 August 2012 в 14:43
поделиться