wpf中的绑定命令

时间:2014-07-07 10:59:15

标签: wpf xaml mvvm data-binding

我有一个实现MVVM设计模式的WPF项目。

这是我在Home.xaml文件中的xaml代码:

<DataTemplate>
    <myProject:ImageButton Content="{Binding Name}" Tag="{Binding MyPath}" Command="{Binding Path=MyCommand}">                                
    </myProject:ImageButton>
</DataTemplate>

我有一个看起来像这样的课程:

public class MyClassDto
{
    public string Name { get; set; }

    public string ShortName { get; set; }

    public string MyPath { get; set; }

    public ICommand MyCommand
    {
        get { return new NavigateToViewCommand(Container.Container.GetA<IMyViewModel>()); }
    }
}

我还有一个HomeViewModel文件,如下所示:

public class HomeViewModel : ViewModelBase, ILandingViewModel
{
    public HomeViewModel()
    {
        items = new List<MyClassDto>
        {
            new MyClassDto
            {
                Name = "John",
                Path = "1.png"
            },
            new MyClassDto
            {
                Name = "Jack",
                Path = "2.png"
            }
        };

    }

    public IList<MyClassDto> items { get; set; }
}

我需要在哪里放置MyCommand方法?

目前,我在Debug-&gt;输出窗口中看到了这一点:

System.Windows.Data Error: 40 : BindingExpression path error: 'MyCommand' property not found on 'object' ''MyClassDto' (HashCode=25729862)'.

BindingExpression:路径= mycommand的; DataItem ='MyClassDto'(HashCode = 25729862); target元素是'ImageButton'(Name ='');目标财产 是'命令'(输入'ICommand')

2 个答案:

答案 0 :(得分:0)

您需要在MyClassDto类中使用ICommand类型的MyCommand属性

答案 1 :(得分:0)

这句话有效吗?

new MyClassDto
{
    LanguageName = "Jack",
    Path = "2.png"
}

可能你的另一个MyClass Dto类有一个没有MyCommand的语言名称和路径。