尽管仔细研究了之前提出的相同性质的问题,并发现了相当多的问题,但我仍然感到困惑,为什么这对我不起作用。
我有一个TreeView -
<Window ... xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
<TreeView Name="Folders" ItemsSource="{Binding Directories}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedItemChanged">
<i:InvokeCommandAction Command="{Binding FolderChangedCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TreeView>
</Window>我正在尝试将SelectedItemChanged事件绑定到我的ViewModel中的命令-
using Microsoft.Practices.Prism.Commands;
internal class MainVM : VMBase
{
private DelegateCommand FolderChangedCommand { get; set; }
public MainVM()
{
FolderChangedCommand = new DelegateCommand(FolderChanged);
}
private void FolderChanged()
{
// Do Stuff
}
}然而我的命令永远不会被触发。我做错了什么?
发布于 2012-09-08 15:12:23
数据绑定引擎需要public属性作为binding source
用作绑定的绑定源属性的属性必须是类的公共属性。显式定义的接口属性不能用于绑定目的,也不能访问没有基实现的受保护属性、私有属性、内部属性或虚拟属性
但是您的命令是private,因此将其更改为:
public DelegateCommand FolderChangedCommand { get; set; }还要确保您的MainVM被正确设置为窗口的DataContext。你可以在this article中找到更多关于调试数据绑定的信息。
https://stackoverflow.com/questions/12327119
复制相似问题