如何在 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 DataContext从MyPopUpViewModel.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();
如何从 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 DataContext从MyPopUpViewModel.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();