申し訳ありませんが、MVVM、WPF、およびXAMLを同時に学習しているところです。
私が作成した問題があり、MVVMでこれをどのように処理するかについて完全に混乱しています。
私が持っているのは、グラフを描画するユーザーコントロールを含む親ウィンドウです。XAMLを描画するグラフは、以前は親ウィンドウの一部でしたが、親ウィンドウが非常に大きいため、組織用のユーザーコントロールに移動しました。
親ウィンドウのXAMLには....があります。
<Window ....>
<Window.Resources>
<ViewModel:DropGraphViewModel x:Key="myViewModel"/>
</Window.Resources>
<!-- Set the data context to the view model. -->
<Window.DataContext>
<Binding Source="{StaticResource myViewModel}"/>
</Window.DataContext>
.....
</Window>
次に、新しいユーザーコントロールXAMLクラスに、グラフの一部で使用されるものを提供する「ジェネレーター」クラスである作成されたリソースがあります。こんな感じ…
<UserControl ......
<!-- Graph resources -->
<Grid.Resources>
<!-- The binding here for ItemsSource represents the collection the graph will be bound to -->
<!-- THIS LINE DOESN'T WORK ANYMORE -->
<Graphs:LineChartGenerator x:Key="generator" ItemsSource="{Binding Source={StaticResource myViewModel}, Path=SampleData}" Width="500" Height="200"> -->
</Grid.Resources>
そして後で、グラフの線を描くなどのことをしたいときに、バインディングを介してジェネレーターを参照するために使用しました。
<!-- Connect the points -->
<Polyline Points="{Binding Source={StaticResource generator}, Path=Points}" Stroke="Blue" />
ネストされたユーザーコントロールを使用しているため、現在壊れているのは、リソースに「generator」クラスのインスタンスを作成するときに、ItemsSource ="{Binding Source={であったバインディングを渡すことができないことです。 StaticResource myViewModel}、Path = SampleData} "は、親ウィンドウの静的リソースにあるビューモデル(myViewModel)にアクセスできなくなったためです。そのため、以前のようにリソースの作成時にバインディングを設定することはできません。
このタイプのパターンを処理するための適切なMVVMの方法は何ですか?
ItemSourceを新しいユーザーコントロールに挿入して、LineChartGeneratorクラスインスタンスを作成するときに渡すことができるようにするにはどうすればよいですか?