KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have an ObservableCollection<Object> that contains two different types. I want to bind this list to a ListBox and display different DataTemplates for each type encountered. I can't figure out how to automatically switch the data templates based on the type. I have attempted to use the DataType property of the DataTemplate and attempted using ControlTemplates and a DataTrigger, but to no avail, either it nothing shows up, or it claims it can't find my types... Example Attempt below: I only have the one data template wired to the ListBox right now, but even that doesn't work. XAML: <Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Window.Resources> <DataTemplate x:Key="PersonTemplate"> <TextBlock Text="{Binding Path=Name}"></TextBlock> </DataTemplate> <DataTemplate x:Key="QuantityTemplate"> <TextBlock Text="{Binding Path=Amount}"></TextBlock> </DataTemplate> </Window.Resources> <Grid> <DockPanel> <ListBox x:Name="MyListBox" Width="250" Height="250" ItemsSource="{Binding Path=ListToBind}" ItemTemplate="{StaticResource PersonTemplate}"></ListBox> </DockPanel> </Grid> </Window> Code Behind: public class Person { public string Name { get; set; } public Person(string name) { Name = name; } } public class Quantity { public int Amount { get; set; } public Quantity(int amount) { Amount = amount; } } public partial class Window1 : Window { ObservableCollection<object> ListToBind = new ObservableCollection<object>(); public Window1() { InitializeComponent(); ListT
Tags (comma-separated)
Save Edits
Cancel