Birden çok türde görünüm modellerini içeren bir ObservableCollection var ve her GridViewColumn CellTemplates ürününün her birinde bir DataTemplate oluşturmak istiyorum. Bu basit örnekte bir ViewModel tabanı oluşturabilirdim, ancak bunu sadece xaml'den yapabilmeyi isterdim. Aşağıdaki xaml, her bir CellTemplate için DataTemplates'lerden birinin kullanılacağı şeyi yapmaya çalıştığımı gösterir.GridViewColumn CellTemplate içindeki her bir DataType için DataTemplate
GridViewColumn.Resources varsa, orada DataTemplates tanımlamak sonra CellTemplate içinde ContentPresenter ile bir DataTemplate kullanın, ancak açıkçası bunu yapamıyorum. Bir TemplateSelector'a ihtiyacım olabileceğini düşünüyorum ama nereden başlayacağımı bilmiyorum.
<ListView ItemsSource={Binding GenericObservableCollection>
<ListView.View>
<GridView>
<GridViewColumn Header="Type">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type vm:ActionInputViewModel}">
<TextBlock Text="Input"/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ActionOutputViewModel}">
<TextBlock Text="Output"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Value">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type vm:ActionInputViewModel}">
<TextBlock Text="{Binding Property1}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ActionOutputViewModel}">
<TextBlock Text="{Binding Property2}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Mükemmel. Göz önünde bulundurduğum her iki yaklaşım için de detaylı cevaplar sağladığınız için teşekkür ederiz. – scuba88
Geez, saatlerce savrulma sonrası sooo yakındım ama sen çivilenmişsin. Benim hatam, doğru bir şekilde işaret ettiğim gibi, 'İçerik' in aksine 'ContentControl'ün' DataContext'ini bağladığım oldu. Kudos ve teşekkürler. –
İnsanların cevabında gerçekten zaman geçirdiklerinde bunu seviyorum. Sağladığınız ayrıntıda belirgindir. İyi iş. +1. – cplotts