Laden...

Datagrid, Problem mit Datencontext bei Bindung an Observablecollection<T>

Erstellt von ill_son vor 10 Jahren Letzter Beitrag vor 10 Jahren 894 Views
I
ill_son Themenstarter:in
227 Beiträge seit 2009
vor 10 Jahren
Datagrid, Problem mit Datencontext bei Bindung an Observablecollection<T>

Hallo,

nachdem ich nun schon länger verzweifelt erfolgflos suche, erstelle ich nun doch einen Thread. Ich möchte eine ObservableCollection an ein DataGrid binden. Das funktioniert auch soweit:


<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}"/>


public Sender()
{
    InitializeComponent();
    port = new SerialPort();
    dateien = new ObservableCollection<Datei>();
    DataContext = dateien;
                       
    dateien.Add(new Datei("Datei1", "20.01.2014", "11:59", "12:01", "100k"));
    dateien.Add(new Datei("Datei2", "20.01.2014", "11:58", "12:02", "100k"));
}

public class Datei : INotifyPropertyChanged
{
    private string name;
    public string Name
    {
        get { return this.name; }
        set
        {
            if (this.name != value)
            {
                this.name = value;
                OnPropertyChanged("Name");
            }
        }
    }

    private string datum;
    public string Datum
    {
        get { return this.datum; }
        set
        {
            if (this.datum != value)
            {
                this.datum = value;
                OnPropertyChanged("Datum");
            }
        }
    }

...

...

    #region INotifyPropertyChanged
    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string info)
    {
        PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
        if (propertyChanged != null)
            propertyChanged(this, new PropertyChangedEventArgs(info));
    }
    #endregion
}

Nun möchte ich gern


DataContext = this;

setzen weil ich auch andere Controls außer des DataGrids binden möchte, die mit

dateien

nichts zu tun haben und da bekomme ich die Datenbindung mit dem DataGrid nicht hin.

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=dateien}">

funktioniert nicht. Was mache ich da falsch?

Grüße, Alex

Final no hay nada más

R
212 Beiträge seit 2012
vor 10 Jahren

dateien besitzt keinen öffentlichen get Accessor

dh:
Schreib

 
public ObservableCollection<Datei> Dateien{get{return dateien;}}
 

und binde auf Dateien.

I
ill_son Themenstarter:in
227 Beiträge seit 2009
vor 10 Jahren

Hallo Robin,

das hat funktioniert. Danke für die Antwort. Eine Frage hätte ich noch: Wie kann ich

dataGridFiles.DataContext = this;

in XAML bewältigen?


<DataGrid>
    <DataGrid.DataContext>
        <!-- Hier komme ich nicht so recht weiter/-->
    </DataGrid.DataContext>
</DataGrid>

Grüße, Alex

Final no hay nada más

R
212 Beiträge seit 2012
vor 10 Jahren

Namesspace deklarieren z.B


<Window
xmlns:dc="clr-namespace:AssemblyName"
>
.
.
.

<DataGrid>
    <DataGrid.DataContext>
        <dc:ClassName>
    </DataGrid.DataContext>
</DataGrid>