Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mi 10.11.10 18:05 
Hallo Leute,

ich möchte eine ComboBox an eine ObservableCollection binden.


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
class TypeList : ObservableCollection<string>
{
    public TypeList()
    {
        Add("Type1");
        Add("Type2");
        Add("Type3");
    }
}


Wenn ich es mit C# Code mache ist es ganz einfach:

ausblenden C#-Quelltext
1:
comboBoxType.ItemsSource = myTypeList					



Ich würde das Binding jedoch gerne mit XAML erledigen, das bekomme ich aber irgendwie nicht hin.

Was ist den hier nicht korrekt, bzw. was fehlt hier?

ausblenden XML-Daten
1:
<ComboBox  ItemsSource="{Binding Source=myTypeList, Path=myTypeList}"...........					


Theoretisch sollte doch:
ausblenden XML-Daten
1:
<ComboBox  ItemsSource="{Binding Source=myTypeList}"...........					

ausreichen.....

_________________
Gruß
Christoph
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Mi 10.11.10 19:28 
Hallo,

user profile iconChristoph1972 hat folgendes geschrieben Zum zitierten Posting springen:
Theoretisch sollte doch:
ausblenden XML-Daten
1:
<ComboBox  ItemsSource="{Binding Source=myTypeList}"...........					

ausreichen.....

Also, was ich mit meinen (noch wenigen) XAML-Kenntnissen weiss: man kann nur an Properties binden.

Irgendwo musst Du also eine Propery haben, an die Du binden kannst:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
private TypeList typeList = null;
public TypeList TypeList 
  {
  get 
  {
    if (typeList == null)
      typeList = new TypeList();
    return typeList;
  } 
}
Das ganze liegt bei mir in der Code-behind von Window1. Das Fenster hat bei mir den Namen "window1":
ausblenden XML-Daten
1:
<Window ... x:Name="window1">					
So, wenn Du nun also die Property an die ComboBox binden willst, so sieht das also so aus:
ausblenden XML-Daten
1:
 <ComboBox ItemsSource="{Binding Path=TypeList, ElementName=window1}"/>					
Hoffe, es hat Dir geholfen!

LG, Marko
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mi 10.11.10 21:49 
Hi,

die Items werden nicht angezeigt. Der Debugger zeigt mir, das die Items in der Collection vorhanden sind.

Hier das Root Node
ausblenden XML-Daten
1:
2:
3:
4:
<Window x:Class="LHistory.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       x:Name="Test"


So sieht der Tag für die ComboBox aus:
ausblenden XML-Daten
1:
<ComboBox  ItemsSource="{Binding ElementName=Test,Path=ThisTypeList}" .........					



Hier die TypeList-Klasse
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public class TypeList
{
    public TypeList()
    {
        t.Add("Type1");
        t.Add("Type2");
        t.Add("Type3");
    }
    private ObservableCollection<string> t = new ObservableCollection<string>();
    public ObservableCollection<string> List { get { return t; } }
}


Diese instanziere ich dann via Property in MainWindow.xaml.cs//Hier zeigt mir der Debugger das die Collection Items enthält. Es muss also was mit dem Bindung faul sein.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
private TypeList t = new TypeList();
public TypeList ThisTypeList
{
    get { return t; }
}

_________________
Gruß
Christoph
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 10.11.10 21:55 
Du kannst Trashkid schlecht vorwerfen, dass du in der Zwischenzeit deinen Code geändert hast ;) ...
ausblenden Quelltext
1:
{Binding ElementName=Test,Path=ThisTypeList.List}					


PS: Stand kein Binding Error im Output-Fenster?

_________________
>λ=
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Do 11.11.10 00:38 
Hi,

Vorwürfe wollte ich keine machen und habe ich auch nicht, oder? Ich habe meinen Code zwischenzeitlich verändert um zu einer Lösung zu kommen. Mir fehlte nur das .List, als ich es gesehen habe, habe ich Sch.... gedacht. Na ja, weiter gehts, aller Anfang ist schwer, oder wie war das?

Vielen Dank euch beiden für den Lösungsansatz!


[EDIT] Es stand kein Error im Output! Nicht mal wenn ich ein Object angebe das nicht exsistiert...

_________________
Gruß
Christoph