У меня есть 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
автоматически.
Как я могу указать выражение привязки внутри стиля, чтобы оно работало независимо от того, является ли контекст родительских данных представлением коллекции или отдельным элементом?