私が持っているListBox
のViewModel上の子コレクションにどのバインドを。リストボックスアイテムは、親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
自動的に。
親データコンテキストがコレクションビューまたは単一のアイテムであるかどうかに関係なく機能するように、スタイル内でバインディング式を指定するにはどうすればよいですか?