Hallo,
ich möchte in der Druckerauswahl ComboBox die Drucker mit einem Icon vorne weg unterscheiden.
Habe folgenden XAML-Code:
<ComboBox ItemsSource="{Binding PrinterList}" Name="cbo_Drucker" Grid.Column="1" IsEditable="False" Margin="4">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="IsEnabled" Value="{Binding IsSelectable}"/>
</Style>
</ComboBox.ItemContainerStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0" Orientation="Horizontal">
<Image VerticalAlignment="Top" MaxWidth="16" MaxHeight="16" Margin="0,0,4,0" Name="ImgPrinter" Source="{StaticResource computer_16}"/>
<TextBlock Text="{Binding PrinterName}" Name="TextPrinter"/>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IrisPrinter}" Value="True">
<Setter TargetName="ImgPrinter" Property="Source" Value="Images/iris_16.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsSelectable}" Value="False">
<Setter TargetName="TextPrinter" Property="Foreground" Value="#c9c9c9"/>
<Setter TargetName="ImgPrinter" Property="Opacity" Value="0.3"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Es funktioniert auch, aber bei der DropDown ist der Abstand zwischen den Items zu gering. Also hatte ich bei den StackPanel Margin="4" drin. Dann aber vergrößert sich nach der Auswahl die Anzeige was ausgewählt wurde. Das möchte ich aber nicht.
Meine Frage: Wie kann ich den margin NUR für die DropDownAuswahl bestimmen? Bei der Anzeige was gewählt wurde soll Margin wieder 0 sein.
Hoffe es ist klar was gemeint ist.
Danke.
Gruß,
Gustl
Hi C#Gustl,
Hier gibt es Informationen wie man eine ComboBox styled: ComboBox Style and Templates. Du kannst entweder die Default-Templates anpassen, oder eigene erstellen.
Weeks of programming can save you hours of planning
Hallo,
wenn du einen entsprechenden DataTemplateSelector (wie z.B. diesen hier) nutzt, dann kannst du für das ausgewählte Element und die Elemente im DropDown-Panel unterschiedliche DataTemplates angeben.