我有一个实现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')
答案 0 :(得分:0)
您需要在MyClassDto类中使用ICommand类型的MyCommand属性
答案 1 :(得分:0)
这句话有效吗?
new MyClassDto
{
LanguageName = "Jack",
Path = "2.png"
}
可能你的另一个MyClass Dto类有一个没有MyCommand的语言名称和路径。