Ich habe eine, ListBox
die an eine untergeordnete Sammlung in einem ViewModel gebunden ist. Die Listbox-Elemente werden in einer Datenvorlage basierend auf einer Eigenschaft im übergeordneten ViewModel gestaltet:
<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>
Ich erhalte folgenden Ausgabefehler:
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')
Wenn ich also den Bindungsausdruck so ändere, "Path=DataContext.CurrentItem.CurveSpeedMustBeSpecified"
funktioniert er, aber nur solange der Datenkontext des übergeordneten Benutzersteuerelements a ist BindingListCollectionView
. Dies ist nicht akzeptabel, da der Rest des Benutzersteuerelements automatisch an die Eigenschaften von CurrentItem
on the BindingList
gebunden wird.
Wie kann ich den Bindungsausdruck innerhalb des Stils angeben, damit er funktioniert, unabhängig davon, ob der übergeordnete Datenkontext eine Sammlungsansicht oder ein einzelnes Element ist?