0

**如果有对此类问题的回答,请告诉我,然后我将删除它。我没有找到或者我没有使用正确的关键字。我很乐意将其删除,只需将 URL 发布给我即可。

编辑:在调试过程中我注意到了这一点:

insertCommand = 无法获取字段“insertCommand”的值,因为有关包含类的信息不可用。

我正在编写一个非常简单的 MVVM 项目,在该项目中我将一个按钮绑定到 ViewModel 中的一个方法。

我在 ViewModel 中创建了一个命令对象

private ICommamand InsertCommand;

然后

    public ICommand insertCommand
    {
        get
        {
            if (this.insertCommand == null)
                this.insertCommand = new RelayCommand(() => this.AddStudent(), () => this.CanAddStudent());

            return this.insertCommand;
        }
    }

另外,请注意

    private void AddStudent()
    {
        //do something here

    }

当然,默认情况下 CanAddStudent 返回 true 并且在我的视图中

 <Button x:Name="btnShow" Content="Show" Command="{Binding InsertCommand}" ....

然而,它不会被触发。我错过了什么?

谢谢。

4

3 回答 3

2

问题是您公开的公共属性名为“insertCommand”,并且您绑定到已设为私有的“InsertCommand”。

将您的绑定更改为<Button x:Name="btnShow" Content="Show" Command="{Binding insertCommand}" />

于 2013-02-18T23:53:07.697 回答
1

Command在 win8 RT 中不能开箱即用。你必须通过行为。

例如,所有这些在这里都得到了很好的解释。

如果您需要更多涉及的答案,您也可以参考这篇 SO 帖子。

于 2013-02-18T22:56:28.247 回答
0

问题出在我编写的 ViewModel 构造函数中。我将一个值传递给未正确初始化且无法访问的构造函数。

在调试代码并放置几个 Add Watches 后注意到此消息:

insertCommand = 无法获取字段“insertCommand”的值,因为有关包含类的信息不可用。

我要感谢 nzic 推荐 snoop 来调试 xaml。

谢谢。

于 2013-02-19T01:37:56.360 回答