我有一个 ListBox
绑定到 ViewModel 上的一个子集合。基于父 ViewModel 上的某个属性, DataTemplate 样式化了 ListBox 的项目:
<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"
,它就能工作,但前提是父用户控件的 DataContext 是 BindingListCollectionView
。这是不可接受的,因为用户控件的其余部分自动绑定到 BindingList
上的 CurrentItem
的属性。
如何在样式中指定绑定表达式,以便无论父数据上下文是集合视图还是单个项,都能正常工作?