在WPF中,如何獲取超鏈接應從對象屬性調用的命令的引用?WPF - 從數據獲取超鏈接命令?
我正在使用MVVM模式創建一個WPF應用程序。主窗口中的列表框顯示超鏈接。每個超鏈接在點擊時將調用其中一個視圖模型的ICommand屬性。我如何指定應該調用哪個ICommand?
這是我到目前爲止所嘗試的:超鏈接包含在ViewModel.Hyperlinks屬性中,該屬性綁定爲列表框的ItemsSource。超鏈接屬性包含類型MyHyperlink的對象:
public class MyHyperlink
{
public string Text { get; set; }
public string ViewModelCommand { get; set; }
public int RecordID { get; set; }
}
的MyHyperlink.ViewModelCommand屬性包含在單擊超鏈接時,應調用視圖模型的ICommand的名稱。我想使用該值爲WPF Hyperlink控件的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中做到這一點 - 我不想訴諸代碼隱藏。謝謝你的幫助!
在動態命令你的代碼項目的文章,你提到有比使用的IValueConverter一個更好的辦法。你能讓我們知道這個祕密嗎? – dthrasher 2010-05-08 18:54:29
未平移。我正在使用IValueConverter。所以,不是祕密。 – 2010-06-24 14:31:33