Laden...

Combobox erst "eigene combobox items" dann die items aus der ItemsSource mit DataTemplate

Erstellt von dredav vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.081 Views
D
dredav Themenstarter:in
34 Beiträge seit 2012
vor 11 Jahren
Combobox erst "eigene combobox items" dann die items aus der ItemsSource mit DataTemplate

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"

D
615 Beiträge seit 2009
vor 11 Jahren

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

6.862 Beiträge seit 2003
vor 11 Jahren

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.

5.299 Beiträge seit 2008
vor 11 Jahren

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.