問題
のコレクションがあり、IThing
の を作成したいと考えてHierarchicalDataTemplate
いますTreeView
。おそらく、WPF 作成者が可能なDataType={x:Type local:IThing}
あいまいさを処理したくなかったためです。
これはIThing
異なるソースからの s を同時に処理する必要があるため、実装クラスを参照することは問題外です。
現在のソリューション
今のところ、具体的な実装を通じて IThing をプロキシする ViewModel を使用しています。
public interface IThing {
string SomeString { get; }
ObservableCollection<IThing> SomeThings { get; }
// many more stuff
}
public class IThingViewModel
{
public IThing Thing { get; }
public IThingViewModel(IThing it) { this.Thing = it; }
}
<!-- is never applied -->
<HierarchicalDataTemplate DataType="{x:Type local:IThing}">
<!-- is applied, but looks strange -->
<HierarchicalDataTemplate
DataType="{x:Type local:IThingViewModel}"
ItemsSource="{Binding Thing.SomeThings}">
<TextBox Text="{Binding Thing.SomeString}"/>
</HierarchicalDataTemplate>
質問
より良い (つまり、プロキシがない) 方法はありますか?