Wpf 绑定到datacontext之外的属性

Wpf 绑定到datacontext之外的属性,wpf,data-binding,xaml,mvvm,Wpf,Data Binding,Xaml,Mvvm,我正在创建一个WPF应用程序,在实现我的用户界面想法时遇到了一点困难 我有一个MasterViewModel绑定到main窗口,该窗口公开了一组可观察到的ViewModels。我已经编写了一些命令,这些命令基本上切换了observable集合中的当前视图模型,并随后显示了相应的视图。但是,当应用程序第一次加载时,我向集合中添加了一个HomeViewModel,其中显示了Home(导航)视图。我遇到的问题是,我绑定的命令暴露在MasterViewModel上,因此它们不会“层叠”到items控件中

我正在创建一个WPF应用程序,在实现我的用户界面想法时遇到了一点困难

我有一个
MasterViewModel
绑定到
main窗口
,该窗口公开了一组可观察到的
ViewModels
。我已经编写了一些命令,这些命令基本上切换了observable集合中的当前视图模型,并随后显示了相应的视图。但是,当应用程序第一次加载时,我向集合中添加了一个
HomeViewModel
,其中显示了Home(导航)视图。我遇到的问题是,我绑定的命令暴露在
MasterViewModel
上,因此它们不会“层叠”到items控件中。有人能提供一个或更好的解决方案吗?非常感谢

这是我收到的错误:

System.Windows.Data错误:40:
BindingExpression路径错误:
在“对象”“HomeViewModel”(HashCode=5313339)上找不到“MainWindowViewModel”属性。BindingExpression:Path=MainWindowViewModel.LoadClientsCommand
DataItem='HomeViewModel'(HashCode=5313339)
目标元素是“按钮”(名称=“”)
目标属性为“Command”(类型为“ICommand”)


您能提供您的代码场景的代码示例吗

  • 这让我想起了Josh Smith的MVVM示例(),mb您从中得到了您的想法吗
  • 如果我理解正确:为什么不为ItemControl编写一个VM并将命令放在其中
  • 您可以尝试通过RelativeSource()从ItemControl访问命令

  • 您能提供您的代码场景的代码示例吗

  • 这让我想起了Josh Smith的MVVM示例(),mb您从中得到了您的想法吗
  • 如果我理解正确:为什么不为ItemControl编写一个VM并将命令放在其中
  • 您可以尝试通过RelativeSource()从ItemControl访问命令

  • 我相信您可以通过以下方式通过RelativeSource访问MasterViewModel的DataContext上的命令:

    <Button>
        <Button.Command>
            <Binding Path="DataContext.MasterViewCommand">
                <Binding.RelativeSource>
                    <RelativeSource
                        Mode="FindAncestor"
                        AncestorType="{x:Type MasterViewBaseClass}"
                    />
                </Binding.RelativeSource>
            </Binding>
        </Button.Command>
        Click me!
    </Button>
    
    
    点击我!
    
    我相信您可以通过以下方式通过RelativeSource访问MasterViewModel的DataContext上的命令:

    <Button>
        <Button.Command>
            <Binding Path="DataContext.MasterViewCommand">
                <Binding.RelativeSource>
                    <RelativeSource
                        Mode="FindAncestor"
                        AncestorType="{x:Type MasterViewBaseClass}"
                    />
                </Binding.RelativeSource>
            </Binding>
        </Button.Command>
        Click me!
    </Button>
    
    
    点击我!
    
    是的,我尝试从这里调整我的想法,但唯一的问题是到达用户控件之外以获取命令。是的,我尝试从这里调整我的想法,但唯一的问题是到达用户控件之外以获取命令。