0

簡単に言うと、DataTemplate と ViewModel-Class を含む ResourceDictionary があります。

<ResourceDictionary>
    <DataTemplate DataType="Whatever">
        <ListBox ItemsSource="{Binding Source={StaticResource MyViewModel}, Path=SomeGlobalData}" />
    </DataTemplate>

    <MyViewModelClass x:Key="MyViewModel" />
</ResourceDictionary>

もちろん、DataType にはリソース 'MyViewModel' がないため、Binding は機能しません (例外が発生します)。しかし、VisualTree では、DataTemplated を取得する「もの」は、ResourceDictionary がそのリソースにマージされたオブジェクトの子であるため、実行時にアクセスする方法があるかもしれません。

だから私の質問は: DataTemplate 内の 'MyViewModel' にアクセスするクリーンな方法はありますか?

4

1 に答える 1

0

あなたの問題は、これらのリソースがインスタンス化される順序と、StaticResourcevsを使用するという事実ですDynamicResource

StaticResourceは、既に定義されているリソースへの参照を検索することにより、任意の XAML プロパティ属性の値を提供します。主題についてもっと調べてみてください。

したがって、引き続き使用する予定がある場合は、ビュー モデルをデータ テンプレートの上に移動してくださいStaticResource

于 2012-06-05T13:55:36.153 に答える