Ho un ListBoxche si lega a una raccolta figlio su un ViewModel. Gli elementi della casella di riepilogo hanno uno stile in un datatemplate basato su una proprietà sul ViewModel genitore:
<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>
Ottengo il seguente errore di output:
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')
Quindi, se cambio l'espressione di associazione in modo che "Path=DataContext.CurrentItem.CurveSpeedMustBeSpecified"funzioni, ma solo fino a quando il datacontext del controllo utente padre è un file BindingListCollectionView. Ciò non è accettabile perché il resto del controllo utente si lega automaticamente alle proprietà di CurrentItemsu BindingList.
Come posso specificare l'espressione di associazione all'interno dello stile in modo che funzioni indipendentemente dal fatto che il contesto dei dati padre sia una vista di raccolta o un singolo elemento?