【发布时间】:2022-10-15 06:10:16
【问题描述】:
我有一个页面,其中包含一个 ListView x:绑定到我的 ViewModel 中的一个对象。此对象包含一个对象列表(时间戳),其中包含一个主题列表,其中包含另一个对象的列表。我在 2 个列表视图中呈现数据,一个在另一个列表视图中。
<ListView
x:Name="primaryList" // for exemplification purposes
ItemsSource="{x:Bind ViewModel.VideoProject.TimeStamps, Mode=OneWay}"
ItemClick='{x:Bind ViewModel.ListViewTimeStamps_ItemClick, Mode=OneWay}'>
ListView 包含另一个 ListView 的 DataTemplate
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Spacing="5">
<TextBlock Text="{Binding Id}"
FontSize="15"
HorizontalAlignment="Left"
FontWeight="Bold" />
<ListView ItemsSource="{Binding Subjects}"
x:Name="secondaryList"
SelectionMode="Multiple">
<ListView.ItemTemplate>
....
第二个 ListView 后面跟着另一个相同的结构。
我的目标是将第二个 ListView ItemClickEvent 绑定到我的 ViewModel 中的 ListViewTimeStamps_ItemClick 方法,因为我需要secondaryListView 持有的对象(主题)中包含的数据。 我可以尝试将数据模板上下文设置为 ViewModel,但它会破坏主题绑定。
我发现了很多关于这个主题的问题,但与 WPF 不同的是,没有 AncestorType 来获取向上的树引用。
观察: 我的项目基于模板模型,它使用 ViewModel 作为属性创建 XAML .cs。我也没有在 XAML 页面上设置 DataContext,因为我可以 x:bind 通常将我的视图模型绑定到页面元素而无需显式设置。
有没有办法在不使用附加属性的情况下完成? 谢谢你。
【问题讨论】:
-
“不使用附加属性”作为仅 XAML 的解决方案?不。
-
所以到目前为止还没有替代 AncestorType?