나는이 ListBox
뷰 모델에 자식 컬렉션에있는 바인딩을. 목록 상자 항목은 상위 ViewModel의 속성에 따라 데이터 템플릿에서 스타일이 지정됩니다.
<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>
다음과 같은 출력 오류가 발생합니다.
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')
따라서 바인딩 식을 변경하면 "Path=DataContext.CurrentItem.CurveSpeedMustBeSpecified"
작동하지만 부모 사용자 정의 컨트롤의 데이터 컨텍스트가 BindingListCollectionView
. 이 허용되지 않기 때문에의 속성에 대한 사용자 제어 귀속 나머지 CurrentItem
상의 BindingList
자동.
컬렉션 뷰 또는 단일 항목 인 상위 데이터 컨텍스트에 관계없이 작동하도록 스타일 내에서 바인딩 식을 지정하려면 어떻게해야합니까?