Saya memiliki ListBox
yang mengikat ke koleksi anak di ViewModel. Item listbox ditata dalam template data berdasarkan properti pada ViewModel induk:
<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>
Saya mendapatkan kesalahan keluaran berikut:
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')
Jadi jika saya mengubah ekspresi binding agar "Path=DataContext.CurrentItem.CurveSpeedMustBeSpecified"
berfungsi, tetapi hanya selama konteks data dari kontrol pengguna induk adalah a BindingListCollectionView
. Ini tidak dapat diterima karena kontrol pengguna lainnya mengikat properti CurrentItem
di BindingList
secara otomatis.
Bagaimana cara menentukan ekspresi binding di dalam gaya agar berfungsi terlepas dari konteks data induk menjadi tampilan koleksi atau item tunggal?