У меня есть ListBox, который привязывается к дочерней коллекции в ViewModel. Элементы listbox оформлены в виде datatemplate на основе свойства родительского 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", оно работает, но только до тех пор, пока datacontext родительского элемента управления пользователя BindingListCollectionView. Это неприемлемо, так как остальная часть пользовательского элемента управления автоматически связывается со свойствами CurrentItem на BindingList.
Как я могу указать выражение привязки внутри стиля, чтобы он работал независимо от того, какой родительский контекст данных является представлением коллекции или отдельным элементом?