说下面的HierarchicalDataTemplate显示2个数据集。然后有2个具有相同x:Name =“ MyListBoxName”的ListBoxes。WPF如何知道将哪个作为CommandParameter传递?
<HierarchicalDataTemplate ItemsSource="{Binding SubNodes}">
<ListBox x:Name="MyListBoxName">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Page}}, Path=DataContext.SelectedCommand}" CommandParameter="{Binding ElementName=MyListBoxName}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</HierarchicalDataTemplate>
谢谢 :)
WPF在解析名称时会使用类似于冒泡事件的方式。
由于它MyListBoxName
在其直接父模板中找到了具有名称的元素,因此将使用该元素。
如果不是,它将尝试在父模板的父模板中找到它,依此类推。
这就是为什么在您的情况下它可以编译并完美运行,但是如果您尝试在同一模板中添加重复的名称则失败
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句