Ho un ListBox
che 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 CurrentItem
su 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?