Hallo,
ich habe eine Combobox:
<ComboBox SelectedIndex="0" ItemsSource="{Binding Path=ComboboxItemsSource, Mode=OneWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=IrgendEineEigenschaft}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
und in der code behind bzw. dem view model die "quelle". Wenn ich jetzt eine Collection mit inhalt zurück geben geht das soweit auch.
public ObservableCollection<IrgendEineKlasse> ComboboxItemsSource
{
get
{
return new ObservableCollection<IrgendEineKlasse>();
}
}
Nun möchte ich aber noch 3 total anderst aussehende ComboboxItems als erstes haben. Diese drei würde ich entweder hardcodet in xaml oder irgendwie dynamisch davor setzen können. Wie kann ich das realisieren?
Anderst ausstehen heißt soviel wie das sie nicht dem DataTemplate "entsprechen"
Hallo dredav
Du kannst Deiner IrgendEineKlasse weitere Properties verpassen wie, BackGroundColor, ForeColor usw. Genau gleich wie du den Text bindest, können auch solche Eigenschaften per Binding gebunden werden.
Oder was genau willst du hören ?
Beste Grüsse
Diräkt
Hallo,
Um Items unterschiedliche Templates zu geben, benutzt man den ItemTemplateSelector.
Was aber keinesfalls geht ist, Items aus unterschiedlichen Quellen anzuzeigen. Entweder packt man die Items in die Items Collection oder man setzt ItemsSource auf die Quellaufzählung. Mischen geht aber nicht. Daher musst du dafür sorgen, dass du eine gemeinsame Datenquelle hast.
Baka wa shinanakya naoranai.
Mein XING Profil.
Mir ist TemplateSelector ziemlich unsympatisch, weil für jeden View muß ein eigener geschrieben werden - sowas scheint mir wie ein verkapptes Codebehind - dann eben an annerer Stelle.
Aber vlt. kapiere ich den auch einfach nicht.
Jedenfalls machich meist einfach verschieden typisierte DataTemplates in die Combobox-Resourcen, und weil ich denen keinen Key gebe, wenden die sich selbsttätig richtig an.
Hmm - hab grad nur sample mit Treeview - is aber dasselbe mit ListControls:
<TreeView Grid.Row="1" ItemsSource="{Binding Path=FileSystemTree.Roots}" >
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type my:DirectoryNode}"
ItemsSource="{Binding Path=Childs}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Source="/WpfFilesystemTreeView;component/Icons/Folder.ico" />
<TextBlock Margin="2 1 0 1" Text="{Binding Path=Item.Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type my:FileSystemNode}" >
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Source="/WpfFilesystemTreeView;component/Icons/File.ico" />
<TextBlock Margin="2 1 0 1" Text="{Binding Path=Item.Name}" />
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>
Der frühe Apfel fängt den Wurm.