在 WPF 中,如何获取对超链接应从对象属性调用的命令的引用?
我正在使用 MVVM 模式创建一个 WPF 应用程序。主窗口中的列表框显示超链接。单击时,每个超链接都会调用视图模型的 ICommand 属性之一。如何指定应该调用哪个 ICommand?
这是我到目前为止所尝试的:超链接包含在 ViewModel.Hyperlinks 属性中,该属性绑定为列表框的 ItemsSource。Hyperlinks 属性包含 MyHyperlink 类型的对象:
public class MyHyperlink
{
public string Text { get; set; }
public string ViewModelCommand { get; set; }
public int RecordID { get; set; }
}
MyHyperlink.ViewModelCommand 属性包含单击超链接时应调用的视图模型 ICommand 的名称。我想使用该值为 WPF 超链接控件的 Command 属性指定 PropertyPath。我尝试使用命令名称为列表框创建一个 PropertyPath 资源,但 WPF 不会接受。这是我的 XAML:
<ListBox ItemsSource="{Binding Hyperlinks}">
<ListBox.Resources>
<PropertyPath x:Key="CommandPath" Path="{Binding ViewModelCommand}" />
</ListBox.Resources>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Command="{StaticResource CommandPath}"
CommandParameter="{Binding Path=RecordID}">
<TextBlock Text="{Binding Text}" />
</Hyperlink>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如何指定单击超链接时应调用哪个 ICommand?我是创建一个资源(如上所示),还是它以其他方式完成?我需要在 XAML 中执行此操作——我不想诉诸代码隐藏。谢谢你的帮助!