如何在 wpf 中从 window pop 调用命令

How to call a command from window pop in wpf

如何从 window 弹出窗口调用委托命令。 我在 window 上显示了一个弹出窗口 window。 弹出窗口 window 有需要从 ViewModel 调用 DelegateCommand 的按钮。

下面是 Window > MyPopUp.xaml.cs

的代码
public partial class MyPopUp : Window
{
  public MyPopUp(){
     InitializeComponent();
    }
}

下面是ViewModel的代码> > MyPopUpViewModel.cs

public class MyPopUpViewModel: BindableBase
{
    public MyPopUpViewModel()
    {
        AddCommand = new DelegateCommand(AddCommandCall);

    }

    private void AddCommandCall()
    {
        /// Command call Code here
    }

    public DelegateCommand AddCommand { get; private set; }

}

MyPopUp.xaml 代码在这里

<Window x:Class="Project"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

      xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:local="clr-namespace:Project.PopUpControls"
    xmlns:system="clr-namespace:System;assembly=mscorlib"
     xmlns:prism="http://prismlibrary.com/"

    mc:Ignorable="d"
    Title="Create Levels" Height="700" Width="900" 
    prism:ViewModelLocator.AutoWireViewModel="True">

<Grid>
    <Button
        Command="{Binding DataContext.AddCommand}"            
        Content="test"
        Margin="0,5,0,0"
        FontSize="16"
        FontWeight="Normal"
        Width="100"
        HorizontalAlignment="Center"
        HorizontalContentAlignment="Center"
        VerticalAlignment="Top"
        VerticalContentAlignment="Center"
        Foreground="#ffffff"
        Background="#4e4e4e"/>
</Grid>

尽管在 MyPopUp.xaml.cs 中调用 InitializeComponent(); 时 window DataContextMyPopUpViewModel.cs

获取里面的所有命令

然后当点击弹出按钮时...它应该调用命令 AddCommand,但它没有被调用。

让我知道我遗漏了什么或需要什么 added/change。

提前致谢。

在 wpf 上挖掘了很多时间并尝试了一些替代方法.. 我得到了答案 Command="{Binding Path=DataContext.AddCommand,RelativeSource={RelativeSource AncestorType=Window}}"

<Grid>
<Button
    Command="{Binding Path=DataContext.AddCommand,RelativeSource={RelativeSource AncestorType=Window}}"            
    Content="test"
    Margin="0,5,0,0"
    FontSize="16"
    FontWeight="Normal"
    Width="100"
    HorizontalAlignment="Center"
    HorizontalContentAlignment="Center"
    VerticalAlignment="Top"
    VerticalContentAlignment="Center"
    Foreground="#ffffff"
    Background="#4e4e4e"/>

我没有在您的代码隐藏或 xaml 中看到对您的视图模型的调用。也许我错了,但对我来说你需要在代码隐藏中调用 InitializeComponent() ==> DataContext = new MyPoPupViewModel() !

Xaml 通话:

xmlns:local="clr-namespace:YourApplication"

<Window.DataContext>
   <local:MyPoPupViewModel/>
</Window.DataContext>

请为视图设置 DataContext

InitializeComponent();
DataContext = new MyPopUpViewModel();