Icons in einer ListView WPF

02/07/2009 - 11:51 von Michael Burkhardt | Report spam
Hallo, ich habe eine ListView in einem WPF Projekt. der XAML Code siht bzgl.
der ListView folgendermassen aus:
Code Anfang --!--
<!-- ListView Neu-->
<ListView Margin="12,133,143,0" Name="m_ListBox" FontFamily="Courier New"
FontSize="12" SelectionChanged="ListView_SelectionChanged"
IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding}" Height="66"
VerticalAlignment="Top">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Nr}"
Header="Nr" Width="80"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=PCNr}"
Header="PCNr" Width="35"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=Richtung}"
Header="Richtung" Width="70"/>
</GridView>
</ListView.View>
</ListView>
Code Ende --!--

Im CS Code sieht der Quellcode folgendermassen aus:
Code Anfang !
this.DataContext = dsTele.MyDataTable;
Code Ende !

Nun meine Frage: in der Spalte "Richtung" der ListView möchte ich abhàngig
von "gesendet" oder "empfangen" unterschiedliche Icons darstellen.
Wie mache ist das????
Irgendwie muss ich im DataSet unterschiedliche Icons angeben können oder
kann ich das im XAML Code noch entscheiden welches Icon ich für welche Zeile
haben möchte. Denn die Daten im ListView habe in der Spalte "Richtung" mal
ein 'g' = gesendet oder ein 'e'=empgfangen stehen. Anhand dieser Information
möchte ich unterschiedliche Icons einblenden.

Danke im Voraus
Michael
 

Lesen sie die antworten

#1 Frank Dzaebel
02/07/2009 - 22:28 | Warnen spam
Hallo Michael,

Hallo, ich habe eine ListView in einem WPF Projekt. [...]
... in der Spalte "Richtung" der ListView möchte ich
abhàngig von "gesendet" oder "empfangen" unterschiedliche
Icons darstellen.



Eine typische Lösung geht über ein Icon-DataTemplate mit
einem Image, das über DataTrigger bei angegebenen
Werten mit den Setter'n die gewünschten Bildressourcen
zuweist. Das ganze wird dann als DynamicResource dem
CellTemplate der gewünschten GridViewColumn zugewiesen:

<Window x:Class="WpfListViewIcon.Window1"
xmlns="http://schemas.microsoft.com/winfx/...tion"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
<Grid>
<!-- ListView Neu-->
<ListView
Margin="12,12,40,31" Name="m_ListBox"
FontFamily="Courier New"
FontSize="12" SelectionChanged="ListView_SelectionChanged"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}">
<ListView.Resources>
<DataTemplate x:Key="IconTemplate">
<Image x:Name="myImage" Width="16" Height="16" />
<DataTemplate.Triggers>
<DataTrigger
Binding="{Binding Path=Richtung}"
Value="g" >
<Setter Property="Source"
TargetName="myImage"
Value="images\info.png" />
</DataTrigger>
<DataTrigger
Binding="{Binding Path=Richtung}"
Value="e" >
<Setter Property="Source"
TargetName="myImage"
Value="images\Lampe.png" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn
DisplayMemberBinding="{Binding Path=Nr}"
Header="Nr" Width="40"/>
<GridViewColumn
DisplayMemberBinding="{Binding Path=PCNr}"
Header="PCNr" Width="35"/>
<GridViewColumn
CellTemplate="{DynamicResource IconTemplate}"
Header="Richtung" Width="70"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen