Wpf 如何使用Caliburn Micro从视图调用MainWindow的方法?
我的主窗口上定义了一些弹出按钮。我想从WPF应用程序的视图中打开它们 当我尝试绑定到我的命令时,我没有得到任何错误,但是弹出按钮不会打开。当我在主窗口中直接调用该方法时,弹出按钮打开 MainWindow.xaml.cs上的方法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
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