Tengo un ListBox
que se une a una colección secundaria en un ViewModel. Los elementos del cuadro de lista tienen un estilo en una plantilla de datos basada en una propiedad en el ViewModel principal:
<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>
Recibo el siguiente error de salida:
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')
Entonces, si cambio la expresión de enlace a "Path=DataContext.CurrentItem.CurveSpeedMustBeSpecified"
que funciona, pero solo mientras el contexto de datos del control de usuario principal sea un BindingListCollectionView
. Esto no es aceptable porque el resto del control de usuario se une a las propiedades del CurrentItem
en BindingList
automáticamente.
¿Cómo puedo especificar la expresión de enlace dentro del estilo para que funcione independientemente de que el contexto de datos principal sea una vista de colección o un solo elemento?