Как вызвать команду из окна pop в wpf - PullRequest
1 голос
/ 28 мая 2019

Как вызвать команду делегата из всплывающего окна.Я показываю всплывающее окно над окном. Во всплывающем окне есть кнопка, которая должна вызвать DelegateCommand из ViewModel.

Ниже приведен код для 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>

Хотя при вызове InitializeComponent(); в MyPopUp.xaml.cs в окне DataContext получить всекоманды в нем из MyPopUpViewModel.cs

Затем при нажатии на кнопку всплывающего окна ... Она должна вызывать команду AddCommand , но она не вызывается.

Дайте мне знать, что мне не хватает или что-то нужно добавить / изменить.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 28 мая 2019

Копаю так много времени на 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"/>

0 голосов
/ 28 мая 2019

Пожалуйста, установите DataContext для просмотра

InitializeComponent();
DataContext = new MyPopUpViewModel();
0 голосов
/ 28 мая 2019

Я не вижу ни в вашем коде, ни в xaml вызов вашей модели представления. Может быть, я ошибаюсь, но для меня вам нужно позвонить после InitializeComponent () в codebehind ==> DataContext = new MyPoPupViewModel ()!

Звоните по Xaml:

xmlns:local="clr-namespace:YourApplication"

<Window.DataContext>
   <local:MyPoPupViewModel/>
</Window.DataContext>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...