---
title: "WPF.."
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/166730-wpf"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Gladh"
published: "2007-11-27T12:25:30.000Z"
updated: "2007-11-28T12:58:41.000Z"
replies: 1
views: 442
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/166730-wpf"
---

# WPF..

## #1 — Gladh, 2007-11-27T12:25Z

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

Permalänk: https://www.webforum.nu/p/166730

## #2 — Gladh, 2007-11-28T12:58Z

Fix hjälp med en lösning.

code-behind

```
public partial class Window1 : Window

{

public static readonly DependencyProperty CompanyPositionProperty = DependencyProperty.Register("CompanyPosition", typeof(ObservableCollection<CompanyPosition>), typeof(Window1));

 

public ObservableCollection<CompanyPosition> CompanyPosition {

get { return (ObservableCollection<CompanyPosition>)GetValue(Window1.CompanyPositionProperty); }

set { SetValue(Window1.CompanyPositionProperty, value); }

}

 

public Window1() {}

private void Window_Loaded(object sender, RoutedEventArgs e)

{

this.CompanyPosition = new ObservableCollection<CompanyPosition>();

this.CompanyPosition.Add(new CompanyPosition(1, "Big boss"));

this.CompanyPosition.Add(new CompanyPosition(2, "Small boss"));

this.CompanyPosition.Add(new CompanyPosition(3, "Worker"));

DataContext = new Person();

}

}

 

public class Person

{

public string Name { get; set; }

public int SelectedActivator { get; set; }

public Person()

{

this.Name = "Magnus";

this.SelectedActivator = 2;

}

}

 

public class CompanyPosition

{

public int Key { get; set; }

public string Value { get; set; }

public CompanyPosition(int key, string value)

{

this.Key = key;

this.Value = value;

}

}
```

XAML-filen

```
<Window x:Class="WpfApplication1.Window1" x:Name="_root"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">

<Grid>

<Grid.RowDefinitions>

<RowDefinition/>

<RowDefinition/>

<RowDefinition/>

</Grid.RowDefinitions>

<TextBox Grid.Row="0" Name="txtName" Text="{Binding Path=Name}" Height="20"/>

<ComboBox Grid.Row="1" Name="cbActivator" ItemsSource="{Binding 

Path=CompanyPosition, ElementName=_root}" SelectedValue="{Binding Path=SelectedActivator}"

SelectedValuePath="Key" DisplayMemberPath="Value" Height="20"/>

</Grid>

</Window>
```

Permalänk: https://www.webforum.nu/p/2054500

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/166730-wpf
