У мене є 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
.
Як я можу вказати вираз прив'язки всередині стилю, щоб він працював незалежно від батьківського контексту даних, який є переглядом колекції чи окремим елементом?