【发布时间】:2017-06-27 13:36:17
【问题描述】:
我有一个这样定义的 DirectoryItems TreeView:
public class DirectoryItem : INotifyPropertyChanged
{
public String DisplayName { get; set; }
public String Fullpath { get; set; }
public ObservableCollection<DirectoryItem> Children { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
当用户从树视图中选择一个 DirectoryItem 时,我想从该项目中获取完整路径,从文件中读取所有文本,并将其加载到文本编辑器中。
我的 ViewModel 有一个文本编辑器绑定到的 DisplayText 属性:
internal class MainWindowViewModel : IMainWindowViewModel
{
private ObservableCollection<DirectoryItem> DirectoryItems { get; set; }
public string DisplayText { get; set; }
//this needs to be implemented to take a filepath and read from it
}
我认为应该有一个调用的命令与 TreeViewItem 的 IsSelected 属性相关联,该属性将完整路径传递给 ViewModel,但我无法使代码正常工作。我将如何实现这一点?
这是我无法工作的内容,我收到“属性触发器无法附加到样式类型的元素”错误:
<Style TargetType="{x:Type TreeViewItem}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedItemChanged">
<i:InvokeCommandAction Command="{Binding DisplayText}" CommandParameter="{Binding ElementName=treeView, Path=SelectedItem}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Style>
谢谢。
【问题讨论】: