0

MVVM を使用している WPF アプリケーションがあります。

XAML でこれを行う方法があることは知っていますが、プラグイン アーキテクチャに取り組んでおり、プラグインがそのビューモデルをプラグイン ホストのビューモデルとデータ テンプレートに公開するソリューションを考え出しました。プラグインビューのライフタイム管理はWPFに任せたい。プラグインで UserControl を公開しようとしましたが、WPF が UserControl を破棄することを決定したときに問題が発生したため、奇妙なハックな回避策なしに再接続しませんでした。コントロールをデータにバインドでき、それがテンプレートであり、データ テンプレートにバインドできるようにするために、ある種のバインディングを取得する際に問題が発生しています。

次のようなViewModelがあります。

public class MyViewModel
{
    public DataTemplate SelectedTemplate{ get; set;}
    public object SelectedViewModel {get; set;}
}

選択したテンプレートとビューモデルは、コード内の別の場所で決定されますが、私の質問には関係ありません。

私の質問は、SelectedViewModel に表示されるデータを表示する方法を知るために、DataTemplate にバインドする方法です。

DataTemplate は、以下を表すコードで作成された DataTemplate です。

<DataTemplate DataType="{x:Type vm:MyViewModel}">
    <v:MyUserControl />
</DataTemplate>

私が試してみました:

<UserControl Template="{Binding Path=SelectedTemplate}" 
    Content="{Binding Path=SelectedViewModel"} />

ただし、UserControl は、データ テンプレートではなく、コントロール テンプレートを想定しています。

4

1 に答える 1

1
<UserControl>
   <ContentControl Content="{Binding SelectedViewModel}" ContentTemplate="{Binding SelectedTemplate}" />
</UserControl>
于 2012-09-27T09:36:20.327 に答える