私はプロパティの注入を使用するためにアプリケーションのリファクタリングに取り組んでいます。これは私のようなコードの背後にあるビューからビューを作成する必要があります。もともとはすべてがXAMLで作成され、バインディングは静的リソースによってビューモデルに設定されていました。これは、ビューモデルにデータを取得するためのサービスを注入することを制御しませんでした。usercontrolがコードビハインドから作成されたときに静的リソースが見つかりません
これはApp.xaml.csです:
public App()
{
this.MainWindow = new MainWindow(new MainWindowViewModel(new DbDataService()));
MainWindow.Show();
}
MainWindowViewModelはDataContextのに設定されています。 App.xamlは、リストボックスで、製品の種類のクラスを表示するために、このリソースが含まれています
<DataTemplate x:Key="DataTemplate" DataType="{x:Type classes:Product}">
メインウィンドウには、各ビューのタブがあります。私は、メインウィンドウのコンストラクタで、次のように作成したタブの表示があります:私はこれを行うと
ProductsTab.Content = new MainView(mainWindowViewModel);
を、私はこの行のMAINVIEWに次のエラーが表示されます。
<dxe:ListBoxEdit Grid.Column="0" ItemTemplate="{StaticResource DataTemplate}" ...etc... />
「システム 『に価値を提供します』 .Windows.StaticResourceExtension '例外がスローされました。行番号「37」および行位置「31」。
私が試したこと: XAMLでタブのビューを作成し、そのデータコンテキストを親に設定しようとしましたが、まだこの例外があります。 静的リソースを動的リソースに変更しようとしましたが、実行時にエラーは発生しませんが、リストボックスに情報が正しく表示されません。
私が知る必要があるもの: 静的/動的リソースを常用性のある方法で使用する方法。 コードでテンプレートを作成してビューに注入するなど、この問題に対するより良いアプローチがある場合は、
私の懸念のいくつか: 私はこのアプリケーションに依存性注入を追加したいと思いますが、私が使用している手法のように、リソースを分割するだけでなく、MVVMパターンを破るように感じます。
これは簡単な修正でした。あなたは人生の節約に非常に感謝しています:) – CEvans