J'ai un ListBoxqui se lie à une collection enfant sur un ViewModel. Les éléments de la zone de liste sont stylisés dans un modèle de données basé sur une propriété du ViewModel parent:
<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>
J'obtiens l'erreur de sortie suivante:
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')
Donc, si je change l'expression de liaison, "Path=DataContext.CurrentItem.CurveSpeedMustBeSpecified"cela fonctionne, mais seulement tant que le contexte de données du contrôle utilisateur parent est un BindingListCollectionView. Cela n'est pas acceptable car le reste du contrôle utilisateur se lie aux propriétés du CurrentItemsur le BindingListautomatiquement.
Comment puis-je spécifier l'expression de liaison à l'intérieur du style afin qu'elle fonctionne indépendamment du fait que le contexte de données parent soit une vue de collection ou un élément unique?