Laden...

XAML Margin nut für die DropDownAuswahl bestimmen, nicht für die angezeigten Items

Erstellt von C#Gustl vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.265 Views
C
C#Gustl Themenstarter:in
36 Beiträge seit 2012
vor 7 Jahren
XAML Margin nut für die DropDownAuswahl bestimmen, nicht für die angezeigten Items

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

5.658 Beiträge seit 2006
vor 7 Jahren

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

709 Beiträge seit 2008
vor 7 Jahren

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.