我有一个页面,其中包含一个绑定到我的ViewModel中的对象的ListView x:。该对象包含一个对象列表(时间戳),其中包含一个主题列表,主题列表中包含另一个对象列表。我在两个列表视图中显示数据,一个在另一个中。
<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保存的对象(Subject)中包含的数据。我可以尝试将数据模板上下文设置为ViewModel,但这会破坏Subject绑定。
我发现了很多关于这个主题的问题,但是与WPF不同的是,没有AncestorType来捕获up树引用。
Obs:我的项目是基于模板模型的,它创建了XAML.cs,并将ViewModel作为属性。我也没有在XAML页面上设置DataContext,因为我可以将视图模型正常地x:绑定到页面元素,而无需显式设置。
有没有不使用附加属性的方法来完成?谢谢。
1条答案
按热度按时间iih3973s1#
由于在WinUI中不支持设置
RelativeSource
的AncestorType
属性,因此如果不编写一些代码,就无法在纯XAML中完成此操作。您可以按照建议和示例here实现一个附加的行为:
所以到目前为止还没有AncestorType的替代品吗?
不。不在XAML中。