WPF如何解决相同的ElementName问题?

法比安

说下面的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章