Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何使用Caliburn Micro从视图调用MainWindow的方法?_Wpf_Binding_Caliburn.micro_Mahapps.metro - Fatal编程技术网

Wpf 如何使用Caliburn Micro从视图调用MainWindow的方法?

Wpf 如何使用Caliburn Micro从视图调用MainWindow的方法?,wpf,binding,caliburn.micro,mahapps.metro,Wpf,Binding,Caliburn.micro,Mahapps.metro,我的主窗口上定义了一些弹出按钮。我想从WPF应用程序的视图中打开它们 当我尝试绑定到我的命令时,我没有得到任何错误,但是弹出按钮不会打开。当我在主窗口中直接调用该方法时,弹出按钮打开 MainWindow.xaml.cs上的方法 public ICommand openFlyoutHomeCommand { get; private set; } public void openFlyoutHome() { FlyoutHomePlayers.IsOpen = t

我的主窗口上定义了一些弹出按钮。我想从WPF应用程序的视图中打开它们

当我尝试绑定到我的命令时,我没有得到任何错误,但是弹出按钮不会打开。当我在主窗口中直接调用该方法时,弹出按钮打开

MainWindow.xaml.cs上的方法

public ICommand openFlyoutHomeCommand { get; private set; }
    public void openFlyoutHome()
    {
        FlyoutHomePlayers.IsOpen = true;
    }
以及视图中的绑定,该视图显示在主窗口中:

<Button Grid.Row="0" Grid.Column="1" Margin="10 30 10 10" Content="Open Flyout" Command="{Binding openFlyoutHome}" CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"></Button>

首先,查看您的输出控制台,查看是否存在任何绑定警告

然后,应将命令的实例指定给openFlyoutHomeCommand。此实例应引用调用方法openFlyoutHome的委托(或创建具有相同行为的匿名委托)


在代码示例中,openFlyoutHomeCommand属性为null。

最好使用IEventAggregator向主窗口发送消息以打开弹出按钮。这将在主窗口的viewmodel中处理。如果您正在使用Caliburn.Micro主窗口,请参考viewmodel上继承的操作和订阅事件消息。主视图应为ShellView,“viewmodel”应为ShellViewModel