Hallo Leute,
folgendes Problem: Ich möchte Daten nach dem Schema (vereinfacht Dargestellt (kein INotifyPropertyChanged...)):
public class DummyData {
public String Name {
set;
get;
}
public Object Value {
set;
get;
}
}
Diese befinden sich in einer ObservableCollection im ViewModel. Daran binde ich nun mein DataGrid:
<DataGridItemsSource="{Binding Path=DummyDatas}" AutoGenerateColumns="False">
Den namen Darszustellen war natürlich ganz einfach:
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
Problem ist jetzt das Value-Objekt. Dieses kann entweder ein String, eine Zahl oder oder ein von mir definiertes Objekt. Der String soll in einem einfachen TextBlock dargestellt werden. Die Zahl hätte ich gerne als TextBlock und einem Button (Zusammen in einem StackPanel oder ähnliches) und meine eigene Klasse eben so als TextBlock plus zusätzlichem Button.
Dafür brauche ich bestimmt DataGridTemplateColumn-Element nur irgendwie komme ich mit meinen DataTemplates da nicht weiter. So sieht das momentan aus:
<DataGridTemplateColumn Header="Value">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DataTemplate.Resources>
<DataTemplate DataType="{x:Type WpfApplication2:Dummy}">
<StackPanel>
<TextBlock Text="{Binding Value}" />
<Button />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type System:Int32}">
<StackPanel>
<TextBlock Text="{Binding Value}" />
<Button />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type System:String}">
<TextBlock Text="{Binding Value}" />
</DataTemplate>
</DataTemplate.Resources>
<ContentPresenter />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Jetzt weiß ich einfach nicht wie ich das mit einem Control enstprechend darstellen kann...
Ich hoffe jemand kann mir helfen.
Grüße
Nils
Hallo nilres,
dafür kannst du auch einfach einen DataTemplateSelector verwenden.
Damit bist du IMHO am flexibelsten.
Hier ein Beispiel: How to use a DataTemplateSelector
Gruss
Michael