WPF Listbox Item Style ändern

  • WPF

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von TheKing4241.

    WPF Listbox Item Style ändern

    Hi Leute,

    ich möchte gerne den Style der Items in einer Listbox in WPF ändern, dass diese dann so ähnlich aussieht wie WhatsApp unter Windows Phone 8.1 (siehe Bild).
    Ich habe sowas bis jetzt nur in WinForms gemacht und komme mit den Tutorials im Internet nicht so ganz klar.
    Kann mir bitte jemand so einen style erstellen? ?(



    ich möchte eigentlich nur,

    1) dass die Nachrichten von einem selber eine andere Farbe hat, als die vom Gesprächspartner
    2) dass die Nachricht von einem selber links angedockt ist, und die vom Gesprächspartner rechts
    3) ein Rechteck (mit oder ohne spitze egal) um den Text herum

    so wie bei einem ModernUI Chat halt üblich
    Bilder
    • sprechblase.png

      1,34 kB, 559×61, 208 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TheKing4241“ ()

    Ich hab das ganze jetzt so gelöst:

    XML-Quellcode

    1. <Window.Resources>
    2. <Style x:Key="{x:Type ListBoxItem}" TargetType="ListBoxItem">
    3. <Setter Property="Foreground" Value="White"/>
    4. <Setter Property="Background" Value="{DynamicResource AccentColorBrush}"></Setter>
    5. <Setter Property="Margin" Value="5,5,5,5"></Setter>
    6. <Setter Property="Padding" Value="10,5"></Setter>
    7. </Style>
    8. </Window.Resources>


    jedoch wird jetzt der Style auch auf die ListBox, in der alle verbundenen Clients aufgelistet werden, angewendet, dort will ich jedoch den Standard Style beibehalten.
    Wie kann man jetzt festlegen, dass der spezielle Style auf alle ListBoxen, bis auf die eine angewendet wird?
    Bilder
    • 2.PNG

      13,02 kB, 700×473, 234 mal angesehen
    ich habs jetzt laut dem Tut (msdn.microsoft.com/de-de/library/ms745683(v=vs.110).aspx) so umgebaut:

    XML-Quellcode

    1. <Window.Resources>
    2. <Style BasedOn="{StaticResource {x:Type ListBoxItem}}" TargetType="ListBoxItem" x:Key="ItemStyle">
    3. <Setter Property="Foreground" Value="White"/>
    4. <Setter Property="Background" Value="{DynamicResource AccentColorBrush}"></Setter>
    5. <Setter Property="Margin" Value="5,5,5,5"></Setter>
    6. <Setter Property="Padding" Value="10,5"></Setter>
    7. </Style>
    8. </Window.Resources>


    aber jetzt bekomm ich einen Fehler bei:

    XML-Quellcode

    1. <ListBox x:Name="lbHistory" Style="{StaticResource ItemStyle}" Margin="186,0,0,26" BorderBrush="#FFCCCCCC" BorderThickness="1,0,0,0"/>


    , da ich den Style nur auf ListBoxItems anwenden kann und nicht auf die ListBox.
    Wie kann ich das nun für alle ListBoxItems der ListBox anwenden?

    EDIT:

    Sorry, hab den Tipp vorher überlesen (mit ItemContainerStyle)
    ich kriege aber beim Debuggen trotzdem eine Exception:

    Eine Ausnahme (erste Chance) des Typs "System.Windows.Markup.XamlParseException" ist in PresentationFramework.dll aufgetreten.

    Zusätzliche Informationen: Zeilennummer "10" und Zeilenposition "81" von "Die Angabe eines Werts für "System.Windows.StaticResourceExtension" führte zu einer Ausnahme.".

    Falls ein Handler für diese Ausnahme vorhanden ist, kann das Programm möglicherweise weiterhin sicher ausgeführt werden.
    Wie kann ich das nun für alle ListBoxItems der ListBox anwenden?

    Versuche es einmal so:

    XML-Quellcode

    1. <Window x:Class="MainWindow"
    2. xmlns=[url]http://schemas.microsoft.com/winfx/2006/xaml/presentation[/url]
    3. xmlns:x=[url]http://schemas.microsoft.com/winfx/2006/xaml[/url]
    4. Title="MainWindow" Height="150" Width="150">
    5. <Window.Resources>
    6. <!--Stil für ListBoxItems-->
    7. <Style x:Key="myListBoxItemStyle">
    8. <!--ListBoxItems-Eigenschaften-->
    9. </Style>
    10. </Window.Resources>
    11. <StackPanel>
    12. <!--Beispiel-->
    13. <ListBox>
    14. <ListBoxItem Style="{StaticResource myListBoxItemStyle}">Irgendwas</ListBoxItem>
    15. <ListBoxItem Style="{StaticResource myListBoxItemStyle}">Nochwas</ListBoxItem>
    16. <ListBoxItem Style="{StaticResource myListBoxItemStyle}">Soetwas</ListBoxItem>
    17. <!--und so fort-->
    18. </ListBox>
    19. </StackPanel>
    20. </Window>

    Ich hab jetzt die Lösung:

    ich hatte die Window Ressourcen am Ende meines Windows:

    XML-Quellcode

    1. <Window ...
    2. <Grid>
    3. ...
    4. </Grid>
    5. <Window.Resources>
    6. ...
    7. </Window.Resources>
    8. </Window>


    Nachdem ich es am Anfang eingefügt habe, funzt es !!! :thumbup: :thumbsup:

    XML-Quellcode

    1. <Window ...
    2. <Window.Resources>
    3. ...
    4. </Window.Resources>
    5. <Grid>
    6. </Grid>
    7. </Window>