2

XAMLファイルに静的リソースを作成する必要があります。

<Window.Resources>
    <vm:ViewModel x:Key="viewModel" />
</Window.Resources>

コンボボックスのアイテムを取得するには、この静的リソースが必要です

ItemsSource="{Binding Source={StaticResource viewModel}, Path=GetItems, Mode=TwoWay}"

しかし、ViewModel(コンストラクター)にクラスの背後にあるコードのインスタンスを与えるにはどうすればよいですか?

4

3 に答える 3

8

私がこれを正しく理解している場合、あなたはMVVMパターンに違反しています。ComboBoxからVMにアイテムを提供しないでください。むしろ、VMからアイテムを提供し、それをコンボボックスにバインドする必要があります。そうすれば、アイテムへのアクセスに問題はありません。

于 2012-04-27T10:53:19.290 に答える
2

私が理解している限り、MVVMパターンに従ってビューとビューモデルをバインドする必要があります。

ビューモデルをビューで直接参照しないでください。参照しないと、ビューモデル間に強い結合が生じます。MVVMパターンに従って、DataContextによってそれらを結合する必要があります

コードビハインド(たとえば、ファイルApp.xaml.cs)では、次のようになります。

yourWindow.DataContext = yourViewModel

次に、viewmodelクラスにGetItemsという名前のプロパティがあります

最後に、ウィンドウでリストボックスをGetItemsにバインドします

ItemsSource="{Binding GetItems, Mode=TwoWay}"
于 2012-04-27T11:37:54.113 に答える
0

そうですね、コードからそれを行うことができます。つまり、コードからすべてを行う か、 ObjectDataProviderを使用して(アプリのアーキテクチャに応じて) 試すことができます。

例えば:

<ObjectDataProvider ObjectType="{x:Type ViewModel}"  x:Key="viewModel">
      <ObjectDataProvider.ConstructorParameters>
                <StaticResource ResourceKey="dataProvider"/>
       </ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider >

この場合、当然、povoderのctorに渡すパラメーターもリソースである必要があります。

于 2012-04-27T10:54:28.867 に答える