Tôi có một ListBox
liên kết với một tập hợp con trên ViewModel. Các mục trong hộp danh sách được tạo kiểu trong một mẫu dữ liệu dựa trên một thuộc tính trên ViewModel chính:
<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>
Tôi gặp lỗi đầu ra sau:
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')
Vì vậy, nếu tôi thay đổi biểu thức liên kết thành "Path=DataContext.CurrentItem.CurveSpeedMustBeSpecified"
nó hoạt động, nhưng chỉ với điều kiện là văn bản dữ liệu của điều khiển người dùng chính là a BindingListCollectionView
. Điều này là không thể chấp nhận được vì phần còn lại của kiểm soát người dùng liên kết với các thuộc tính của CurrentItem
trên BindingList
tự động.
Làm cách nào để chỉ định biểu thức liên kết bên trong kiểu để nó hoạt động bất kể ngữ cảnh dữ liệu gốc là dạng xem bộ sưu tập hay một mục duy nhất?