Sitter och bråkar med .NET om att binda data till en Combobox i WPF.
Här är min kod i XAML
<ComboBox Name="cbActivator" ItemsSource="{Binding}" DisplayMemberPath="Value" SelectedValuePath="Key" Height="20"/>
Och är är koden i cs.
cbctivator.DataContext = ActivatorClass.Collection;
public class ActivatorClass
{
public static List<ActivatorClass> Collection
{
get
{
List<ActivatorClass> list = new List<ActivatorClass>();
list.Add(new ActivatorClass(1, "Dependency"));
list.Add(new ActivatorClass(2, "Polling"));
list.Add(new ActivatorClass(3, "Scheduled"));
return list;
}
}
public int Key { get; set; }
public string Value { get; set; }
public ActivatorClass(int key, string value)
{
this.Key = key;
this.Value = value;
}
}
Det fungerar bra, jag får en lista med mina activators i min combobox. Men nu har jag ju data på vilken item i lista som jag vill skall vara vald. Då kan man ju göra det på lite olika sätt.
Man kan sätta det i koden.
cbActivator.SelectedValue = setup.SelectedActivator;
Där selectedActivator innehåller värdet 2. Det fungerar fint, rätt item blir vald i listan.
Man kan även göra det i XAML-koden.
<ComboBox Name="cbActivator" ItemsSource="{Binding}" DisplayMemberPath="Value" SelectedValuePath="Key" Height="20"
[b]SelectedValue="2"[/b] />
Vilket även detta fungerar och rätt item är vald i lista, lite tråkigt med hårdkodning dock och jag vill ju ta värdet från min setup klass. Så då testade jag med det.
<StackPanel Name="sp">
<ComboBox Name="cbActivator" ItemsSource="{Binding}" DisplayMemberPath="Value" SelectedValuePath="Key" Height="20"
[b]SelectedValue="{Binding Path=SelectedActivator}"[/b] />
</StackPanel>
Och i cs.
sp.DataContext = setup;
Så jag har bundit min setup-information till föräldern till comboboxen och säger nu till comboboxen att ta värdet i SelectedActivators från Setup. OCH DET JÄVLA SKITET VÄGRAR FUNGERA... Jag blir så lack....
För att kolla så jag gjort rätt så la jag in en textbox i stackpanel och band till Activators i min setup och fick ut rätt namn, så det måste gå att göra så här, men vad gör jag för fel...
- M