Как вызвать команду из всплывающего окна в wpf

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

Ниже приведен код для окна > 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 окно Контекст данных получает все команды в нем из MyPopUpViewModel.cs

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

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
132
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Столько времени копался в 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>

Спасибо за ваш ответ.. Здесь компания следует правилу, что не писать код программной части,,,

SwapNeil 28.05.2019 16:08

Это очень странно... на самом деле это не программный код, а конструктор!! Так что назовите это в .xaml: <Window.DataContext> <local:MyPopupViewModel/> </Window.DataContext>

Lucas 28.05.2019 16:37

Установите DataContext для просмотра

InitializeComponent();
DataContext = new MyPopUpViewModel();

Спасибо за ваш ответ.. Здесь компания следует правилу, что не писать код программной части,,,

SwapNeil 28.05.2019 16:09

затем вы можете использовать VoewModel Locator для установки DataContext

Colonel Software 28.05.2019 16:11

Другие вопросы по теме