我正在努力学习WPF和C#编程,但我正在努力理解绑定等。
我被困在“绑定”函数或命令到我在网格中的XAML对象。
<Image x:Name="BlkRook1" Source="../Data/BlkRook.png" Grid.Row="{Binding Path=ChessPieces[0].Row}" Grid.Column="{Binding Path=ChessPieces[0].Column}" MouseDown="{Binding Path=ChessPieces[0].Move()}"/>
代码MouseDown="{Binding Path=ChessPieces[0].Move()}"
不起作用,但显示我试图实现的内容
在我的viewmodel中,我已经定义了一个列表,我已经填充了我不同的棋子的实例,然后我计划将每个图像绑定到该列表中的实例。
我试图做的是暂时绑定MouseDown函数,好像我将函数放在Mainwindow.xaml.cs文件中它可以访问它。但我希望它能够从模型中访问它Mainwindow.xaml.cs
namespace TheGame.Views
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new ChessBoardViewModel();
}
}
}
BlkRook对象定义了行,列,名称和函数移动。
错误消息:
<'>'TheGame.Views.MainWindow'不包含'Move'的定义,也没有扩展方法'Move'接受类型为'TheGame.Views.MainWindow'的第一个参数'(你是否缺少using指令)或汇编参考?)“那么..如何将Model-object中定义的函数绑定到XAML对象?
由于
/马丁
答案 0 :(得分:16)
您无法绑定到方法。您正在使用MVVM,因此我建议您将附加属性与命令结合使用。您还可以使用MouseBinding类:http://msdn.microsoft.com/en-us/library/system.windows.input.mousebinding(v=vs.110).aspx。 这里解释了命令绑定:http://www.danharman.net/2011/08/05/binding-wpf-events-to-mvvm-viewmodel-commands/
<Button>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown" >
<i:InvokeCommandAction Command="{Binding MouseDownCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>