Ωραία, μιας και είναι βασική λειτουργία, δες ένα γενικό παράδειγμα και προσπάθησε να το κάνεις να παίξει στη δική σου περίπτωση:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:source="clr-namespace:WpfApplication1"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="Window1"
Height="300"
Width="476">
<Window.Resources>
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type sys:Enum}"
x:Key="EnumValues">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="source:Status" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<DataTemplate x:Key="ΕnumTemplate"
DataType="{x:Type source:Status}">
<TextBlock Text="{Binding}"
x:Name="PART_Text" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}"
Value="aaa">
<Setter TargetName="PART_Text"
Property="Text"
Value="this is aaa" />
</DataTrigger>
<DataTrigger Binding="{Binding}"
Value="bbb">
<Setter TargetName="PART_Text"
Property="Text"
Value="this is bbb" />
</DataTrigger>
<DataTrigger Binding="{Binding}"
Value="ccc">
<Setter TargetName="PART_Text"
Property="Text"
Value="this is ccc" />
</DataTrigger>
<DataTrigger Binding="{Binding}"
Value="ddd">
<Setter TargetName="PART_Text"
Property="Text"
Value="this is ddd" />
</DataTrigger>
<DataTrigger Binding="{Binding}"
Value="eee">
<Setter TargetName="PART_Text"
Property="Text"
Value="this is eee" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Window.Resources>
<Grid>
<ComboBox x:Name="EnumCombo" ItemsSource="{Binding Source={StaticResource EnumValues}}"
SelectedValue="{Binding Source={StaticResource EnumValues}, Path=[0]}"
ItemTemplate="{StaticResource EnumTemplate}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
</Window>
Πως παίζει το παρακάτω:
Αρχικά, θα θεωρήσω ότι οι τιμές που εμφανίζει το ComboBox έρχονται από ένα enumeration. Γι αυτό χρειάζεται ένας ObjectDataProvider ο οποίος μπαίνει στα resources του Window. Ουσιαστικά, αν θα το έκανα με κώδικα, θα έγραφα:
VB.NET: EnumCombo.ItemsSource=System.Enum.GetValues(GetType(Status))
C#: EnumCombo.ItemsSource=Enum.GetValues(typeof(Status));
Κατόπιν, πάλι στα resoures, ορίζουμε το DataTemplate που μέσω DataTriggers, λέει τι θα συμβαίνει όταν πρόκειται να εμφανιστεί κάθε μία από τις τιμές. Ουσιαστικά λέει ότι θα κάνει set σε ένα πράγμα που λέγεται PART_Text (το οποίο είναι αν δεν κάνω λάθος είναι ένα TextBox) το property Text με συγκεκριμένη τιμή.
Το μόνο που μένει πλέον είναι να setάρουμε το ComboBox. Με το ItemsSource ορίζουμε από που θα παίρνει τις τιμές. Με το SelectedValue ορίζουμε ότι θα πάρουμε το πρώτο item από αυτό πάνω στο οποίο έχουμε κάνει bind. Τέλος με το ItemTemplate λέμε ότι θα χρησιμοποιήσουμε το σχετικό DataTemplate όταν θα εμφανίζονται τα items.
Γενικά, το DataBinding και τα DataTemplates είναι τεράστιο θέμα στο WPF. Θα πρέπει να έχεις μια καλή ιδέα για το πώς λειτουργεί το databinding πριν πας στα DataTemplates. Διάβασε κάθε post της Bea Stollnitz και κατόπιν τα άρθρα του Josh Smith στο CodeProject (κοίτα πρώτα τη σειρά "A Guided Tour of WPF"). Υπάρχει πάντα και MSDN. Πάντως θέλει αρκετό διάβασμα το πράγμα...
Vir prudens non contra ventum mingit