Eu tenho um ListBox
que se liga a uma coleção filho em um ViewModel. Os itens da caixa de listagem são estilizados em um datatemplate com base em uma propriedade no ViewModel pai:
<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>
Recebo o seguinte erro de saída:
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')
Portanto, se eu alterar a expressão de ligação, "Path=DataContext.CurrentItem.CurveSpeedMustBeSpecified"
ela funcionará, mas apenas enquanto o texto de dados do controle de usuário pai for um BindingListCollectionView
. Isso não é aceitável porque o restante do controle do usuário se liga às propriedades do CurrentItem
no BindingList
automaticamente.
Como posso especificar a expressão de ligação dentro do estilo para que funcione independentemente do contexto de dados pai ser uma exibição de coleção ou um único item?