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

标签 c# wpf data-binding mvvm loaded

我试图在我的 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/

相关文章:

c# - 从asp.net代码中获取某个网站的源码

c# - webclient 窃听或什么?

c# - 更新 WPF DataGrid 中的单行

wpf - 将超过 1 个参数传递给转换器

angularjs - AngularJS 的脏检查算法的时间复杂度是多少?

c# - DataContext 并将自身绑定(bind)为 RelativeSource

c# - Java Runtime Environment 与.NET Framework 在编译过程方面相比如何?

c# - 不可捕获的异常

c# - 不同选定项目的 WPF 组合框背景

c# - 切割 3D 图像