WPFでは、ハイパーリンクがオブジェクトプロパティから呼び出すコマンドへの参照を取得するにはどうすればよいですか?WPF - データからハイパーリンクコマンドを取得しますか?
MVVMパターンを使用してWPFアプリケーションを作成しています。メインウィンドウのリストボックスはハイパーリンクを解除します。各ハイパーリンクは、クリックされるとビューモデルのICommandプロパティの1つを呼び出します。どのICommandを呼び出さなければならないのかをどのように指定するのですか?
これまでに試したことは次のとおりです。ハイパーリンクは、リストボックスのItemsSourceとしてバインドされているViewModel.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でこれを行う必要があります - 私はコードビハインドに頼っていません。ご協力いただきありがとうございます!
ダイナミックコマンドに関するコードプロジェクトの記事では、IValueConverterを使用するよりも良い方法があると述べました。あなたは秘密を教えてくれますか? – dthrasher
パンが外れませんでした。私はIValueConverterを使用しています。だから、秘密はない。 –