Xaml 使用viewmodel控制按钮单击

Xaml 使用viewmodel控制按钮单击,xaml,click,command,mvvm-light,Xaml,Click,Command,Mvvm Light,我试图通过viewmodel(MVVM)控制按钮的点击。我使用了以下代码来创建命令 <Button x:Name="GetData" Content="Get Data" Margin="8,8,223,0" VerticalAlignment="Top"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <cmd:EventToC

我试图通过viewmodel(MVVM)控制按钮的点击。我使用了以下代码来创建命令

<Button x:Name="GetData" Content="Get Data" Margin="8,8,223,0"   VerticalAlignment="Top">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <cmd:EventToCommand Command="GetData_Click"></cmd:EventToCommand>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

单击的事件应返回人员列表

有谁能为我提供“如何在viewmodel中创建命令”的解决方案吗?请提供一个示例代码


Thanx提前..

如果在视图后面有一个ViewModel作为DataContext,并且在ViewModel上有一个名为GetData_的命令,请单击,然后执行以下操作:

  <Button Command="{Binding Path=GetData_Click"}>

其中GetData是一个函数。可以找到简单的DelegateCommand实现

如果在视图后面有一个ViewModel作为DataContext,并且在ViewModel上有一个名为GetData_的命令,请单击以下命令:

  <Button Command="{Binding Path=GetData_Click"}>

其中GetData是一个函数。可以找到简单的DelegateCommand实现

在viewmodel中,您可以编写命令(也可以使用MVVM Light Toolkit)

在视图中,将EventToCommand更改为:

<cmd:EventToCommand Command={Binding GetDataCommand} />

在viewmodel中,您可以编写命令(也可以使用MVVM Light Toolkit)

在视图中,将EventToCommand更改为:

<cmd:EventToCommand Command={Binding GetDataCommand} />

如果您使用的是MVVM light,则可以执行以下类似操作:

private RelayCommand _getData_Click = null;
public RelayCommand GetData_Click
{
    get
    {
        return _getData_Click ?? _getData_Click = new RelayCommand(
            () =>
            {
                // Get Person List
            });
    }
}
上面有一个例子

更新 您可能会遇到错误,因为您需要使用数据绑定来设置命令,请重试

<Button x:Name="GetData" Content="Get Data" Margin="8,8,223,0" VerticalAlignment="Top" Command="{Binding Path=GetData_Click}"/>

或者将EventToCommand声明更改为:

<cmd:EventToCommand Command={Binding GetDataCommand} />


如果您已将ViewModel设置为DataContext,则应该可以使用该选项。

如果您使用MVVM light,则可以执行以下类似操作:

private RelayCommand _getData_Click = null;
public RelayCommand GetData_Click
{
    get
    {
        return _getData_Click ?? _getData_Click = new RelayCommand(
            () =>
            {
                // Get Person List
            });
    }
}
上面有一个例子

更新 您可能会遇到错误,因为您需要使用数据绑定来设置命令,请重试

<Button x:Name="GetData" Content="Get Data" Margin="8,8,223,0" VerticalAlignment="Top" Command="{Binding Path=GetData_Click}"/>

或者将EventToCommand声明更改为:

<cmd:EventToCommand Command={Binding GetDataCommand} />


如果您已将ViewModel设置为DataContext,则应该可以使用该方法。

我尝试了上述解决方案,但现在出现以下异常:[AG\u E\u PARSER\u BAD\u PROPERTY\u VALUE]。。我缺少一些参数吗?更新答案,如果你在谷歌上搜索该错误,你会发现它与你的XAML有关。我尝试了谷歌上的答案,但不起作用。我知道可能需要eventarguments,但我知道在哪里包含它。。有什么帮助吗?我修复了异常。但现在的问题是,我得到的个人列表没有绑定到listbox。。有什么解决办法吗?正在填充个人列表吗?如果它没有显示在列表框中,则可能是您的数据绑定。我尝试了上述解决方案,但现在出现以下异常:[AG\u E\u PARSER\u BAD\u PROPERTY\u VALUE]。。我缺少一些参数吗?更新答案,如果你在谷歌上搜索该错误,你会发现它与你的XAML有关。我尝试了谷歌上的答案,但不起作用。我知道可能需要eventarguments,但我知道在哪里包含它。。有什么帮助吗?我修复了异常。但现在的问题是,我得到的个人列表没有绑定到listbox。。有什么解决办法吗?正在填充个人列表吗?如果它没有显示在列表框中,则可能是您的数据绑定。