gpt4 book ai didi

c# - 从 ElementTree 的根传递元素作为 CommandParameter

转载 作者:行者123 更新时间:2023-12-03 10:20:16 27 4
gpt4 key购买 nike

我通过 Google 和 StackOverflow 进行了很多搜索,但没有任何答案可以解决我的问题。

我有两个 Xaml 文件:

MainWindow.xaml

<Window x:Name="mainWindow">
<Window.DataContext>
<!-- Instantiate ViewModel of the MainWindow -->
<vm:MainWindowViewModel x:Name="viewModel"/>
</Window.DataContext>

<!-- Create the Menu of the MainWindow -->
<custom:MainMenu Grid.Row="0"/>

<ad:DockingManager x:Name="dockingManager">
<!-- ... -->
</Window>

MainMenu.xaml
<UserControl>
<Menu>
<MenuItem Header="{t:Translate MENU_LAYOUT_SAVE}" Command="{Binding SaveLayoutCommand}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=Window}}"/>
<MenuItem Header="{t:Translate MENU_LAYOUT_LOAD}" Command="{Binding LoadLayoutCommand}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=Window}}"/>
</Menu>
</UserControl>

我的问题出现在这里。而不是传递主窗口对象,我想传递 DockingManager x:Name="dockingManager"从主窗口。但是,如果我尝试通过其名称引用该对象,它会失败......

我尝试了以下绑定(bind):
CommandParameter="{Binding ElementName=dockingManager}"
CommandParameter="{Binding ElementName=dockingManager, RelativeSource={RelativeSource AncestorType=Window}}"

那么如何从 xaml 中的 ElementTree 中找到并引用一个对象( dockingManager )。我想避免在代码隐藏中使用额外的代码。

最佳答案

试试 CommandParameter="{Binding ElementName=dockingManager, Path=.}" .

编辑:
以前的答案是行不通的。这是一个可行的想法...

在 Window.xaml 中:

<custom:MainMenu Grid.Row="0" Tag="{Binding ElementName=dockingManager}" />

在 MainMenu.xaml 中:
<UserControl x:Name="UcMainMenu" />
...
<MenuItem Header="{t:Translate MENU_LAYOUT_SAVE}" Command="{Binding SaveLayoutCommand}" CommandParameter="{Binding ElementName=UcMainMenu, Path=Tag}"/>

关于c# - 从 ElementTree 的根传递元素作为 CommandParameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19052332/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com