gpt4 book ai didi

c# - TreeView SelectedItemChanged 未触发命令

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:10 26 4
gpt4 key购买 nike

尽管搜索了之前提出的相同性质的问题,并找到了很多,但我仍然很困惑为什么这对我不起作用。

我有一个 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 事件绑定(bind)到我的 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
}
}

但我的命令从未被触发。我做错了什么?

最佳答案

数据绑定(bind)引擎需要 public 属性作为 binding source :

The properties you use as binding source properties for a binding must be public properties of your class. Explicitly defined interface properties cannot be accessed for binding purposes, nor can protected, private, internal, or virtual properties that have no base implementation

但是你的命令是private 所以把它改成:

public DelegateCommand FolderChangedCommand { get; set; }

还要确保您的 MainVM 已正确设置为窗口的 DataContext。您可以在 this article 中找到有关调试数据绑定(bind)的更多信息。 .

关于c# - TreeView SelectedItemChanged 未触发命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12327119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com