ฉันมีสิ่ง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
โดยอัตโนมัติ
ฉันจะระบุนิพจน์การผูกภายในสไตล์เพื่อให้ทำงานได้อย่างไรไม่ว่าบริบทข้อมูลพาเรนต์จะเป็นมุมมองคอลเลกชันหรือรายการเดียว