WPF-从数据获取超链接命令?

WPF-从数据获取超链接命令?,wpf,mvvm,hyperlink,Wpf,Mvvm,Hyperlink,在WPF中,如何获取对超链接应从对象属性调用的命令的引用 我正在使用MVVM模式创建一个WPF应用程序。主窗口中的列表框显示超链接。单击每个超链接时,将调用视图模型的ICommand属性之一。如何指定应调用哪个ICommand 以下是我迄今为止尝试过的内容:超链接包含在ViewModel.hyperlinks属性中,该属性被绑定为列表框的ItemsSource。Hyperlinks属性包含MyHyperlink类型的对象: public class MyHyperlink { publi

在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中这样做——我不想求助于代码隐藏。谢谢你的帮助

我认为上面的代码不起作用,因为
Hyperlink.Command
的类型是
ICommand
,而不是
string
。您需要修改您的
MyHyperlink
类,以便
ViewModelCommand
也是一个
ICommand
,或者编写一个
IValueConverter
,在视图模型中给定命令名的情况下找到正确的
ICommand
实现。

我实现了一个使用IValueConverter的解决方案。它被写为。希望它能帮助其他人。

在关于动态命令的代码项目文章中,您提到有一种比使用IValueConverter更好的方法。你能告诉我们这个秘密吗?没有成功。我用的是IValueConverter。所以,没有秘密。