gpt4 book ai didi

c# - 绑定(bind) Loaded 事件?

转载 作者:可可西里 更新时间:2023-11-01 08:31:48 26 4
gpt4 key购买 nike

我试图在我的 MainWindow 加载后显示一个登录窗口,同时坚持使用 MVVM 模式。所以我试图将我的主窗口 Loaded 事件绑定(bind)到我的 View 模型中的事件。这是我尝试过的:

主窗口 View .xaml

 <Window x:Class="ScrumManagementClient.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
DataContext="ViewModel.MainWindowViewModel"
Loaded="{Binding ShowLogInWindow}">
<Grid>

</Grid>
</Window>

MainWindowViewModel.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ScrumManagementClient.ViewModel
{
class MainWindowViewModel : ViewModelBase
{
public void ShowLogInWindow(object sender, EventArgs e)
{
int i = 0;
}
}
}

我收到的错误消息是“Loaded="{Binding ShowLogInWindow}"无效。'{Binding ShowLogInWindow}' 不是有效的事件处理程序方法名称。只有生成类或代码隐藏类的实例方法是有效。”

最佳答案

您将不得不使用 System.Windows.Interactivity dll。

然后在您的 XAML 中添加命名空间:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

然后你可以做这样的事情:

<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding MyICommandThatShouldHandleLoaded}" />
</i:EventTrigger>
</i:Interaction.Triggers>

请注意,您必须使用 ICommand(如果您使用 Prism,则为 DelegateCommand,如果您使用 MVVMLight,则为 RelayCommand),并且窗口的 DataContext 必须包含该 ICommand。

关于c# - 绑定(bind) Loaded 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887867/

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