gpt4 book ai didi

wpf - WPF中带有MVVM的ICommand

转载 作者:行者123 更新时间:2023-12-03 10:21:37 25 4
gpt4 key购买 nike

我是MVVM和WPF的新手,试图在WPF和MVVM中使用ICommand。下面是代码。

有人可以帮忙弄清楚为什么下面的代码不起作用,这意味着单击按钮时什么也没发生。

感谢你的帮助。

查看

<Grid>
<Button Height="40" Width="200" Name="button1" Command="{Binding Path=Click}">Click Me</Button>
</Grid>

App.xaml.cs
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MainWindow mainWindow = new MainWindow();
MainWindowViewModel vm = new MainWindowViewModel();
mainWindow.DataContext = vm;
}
}

MainWindowViewModel.cs
namespace TestWPFApplication.ViewModel
{
public class MainWindowViewModel
{
private ICommand _click;

public ICommand Click
{
get
{
if (_click == null)
{
_click = new CommandTest();
}
return _click;
}
set
{
_click = value;
}
}

private class CommandTest : ICommand
{
public bool CanExecute(object parameter)
{
return true;
}

public event EventHandler CanExecuteChanged;

public void Execute(object parameter)
{
MessageBox.Show("Hi! Test");
}
}
}
}

最佳答案

看来您的OnStartup方法正在实例化MainWindow而从不显示它。您可能在XAML中设置了StartupUri,它正在创建另一个未设置数据上下文的MainWindow

您可以删除StartupUri并调用mainWindow.Show()。或者,您可以摆脱OnStartup方法,并在主窗口的构造函数中设置数据上下文。

关于wpf - WPF中带有MVVM的ICommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19029965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com