これはどのようにオーバーフロー例外になるのでしょうか...?
<DataTemplate x:Key="ElementTemplate">
<StackPanel Orientation="Horizontal">
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding Converter={StaticResource TypeConv}}" Value="{x:Type models:GroupModel}">
<Setter Property="Margin" Value="5 0 0 0"></Setter>
<Setter Property="DataContext" Value="{Binding Model}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<TextBlock Text="{Binding Name}"></TextBlock>
...
<StackPanel/>
<DataTemplate/>
理由: これは、通常モデル A をデータ型として必要とするテンプレート (少なくとも 25 の UI コントロールを持つ) です。はDataTemplate
ですListvVew
ItemTemplate
。ただし、データ型はモデル B 型にすることができます。モデル B にはモデル A 型の「モデル」というプロパティがあります。したがって、ブロック テンプレート全体をコピーして貼り付け、スタイル トリガーまたはセレクターを使用する代わりに、 tDataTemplate
を変更したいだけです。DataContex
(「{Binding}」から「{Binding Model}」へ)
誰かがいくつかの提案、解決策を持っていますか?
どうも!
編集:Converter
入力値の型 (データ オブジェクト自体) を返します。そうすれば、モデル B がいつテンプレートを使用しているかを知ることができ、DataContext を変更できます。