私はこれに約1時間取り組んでおり、関連するすべてのSOの質問を調べました。
私の問題は非常に単純です:
私はHomePageVieModelを持っています:
HomePageVieModel
+IList<NewsItem> AllNewsItems
+ICommand OpenNews
私のマークアップ:
<Window DataContext="{Binding HomePageViewModel../>
<ListBox ItemsSource="{Binding Path=AllNewsItems}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock>
<Hyperlink Command="{Binding Path=OpenNews}">
<TextBlock Text="{Binding Path=NewsContent}" />
</Hyperlink>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
リストはすべての項目で問題なく表示されますが、私の人生では、コマンドに対して何をしようとしても機能しません。
<Hyperlink Command="{Binding Path=OpenNewsItem, RelativeSource={RelativeSource AncestorType=vm:HomePageViewModel, AncestorLevel=1}}">
<Hyperlink Command="{Binding Path=OpenNewsItem, RelativeSource={RelativeSource AncestorType=vm:HomePageViewModel,**Mode=FindAncestor}**}">
<Hyperlink Command="{Binding Path=OpenNewsItem, RelativeSource={RelativeSource AncestorType=vm:HomePageViewModel,**Mode=TemplatedParent}**}">
私はいつも得る:
System.Windows.Dataエラー:4:参照とのバインドのソースが見つかりません....。
更新 ViewModelをこのように設定していますか?これが重要だとは思わなかった:
<Window.DataContext>
<Binding Path="HomePage" Source="{StaticResource Locator}"/>
</Window.DataContext>
魔法を実行するMVVMLightツールキットのViewModelLocatorクラスを使用します。