2011-01-07 21 views
2

Ich möchte ein Benutzersteuerelement enthält ein Datagrid erstellen und dann die Spalten direkt in meinem Usercontrol definieren:Bindung eine WPF-Datagrid in einem Usercontrol

<my:ControlContainingDataGrid ItemsSource="{Binding}"> 
    <my:ControlContainingDataGrid.Columns> 
    <DataGridTextColumn Binding="{Binding Path=Property1}" Header="Property 1"/> 

In der Usercontrol ich die Spalten des Datagrid aussetzen:

static ControlContainingDataGrid() 
{ 
    ColumnsProperty = DependencyProperty.Register(
    "Columns", 
    typeof(ObservableCollection<DataGridColumn>), 
    typeof(ControlContainingDataGrid), 
    new UIPropertyMetadata(new ObservableCollection<DataGridColumn>()) 
); 
} 

[Description("Columns"), Category("Columns")] 
public ObservableCollection<DataGridColumn> Columns 
{ 
    get { return _datagGrid.Columns; } 
} 

public static readonly DependencyProperty ColumnsProperty; 

=> es funktioniert nicht: die an Property1 gebundene Spalte wird nicht erstellt.

Ich versuche, die Spalte programmatisch zu erstellen:

_datagGrid.Columns.Add(new DataGridTextColumn { 
     Header = "Property 1", 
     Binding = new Binding { 
     Path = new PropertyPath("Property1"), 
     Mode = BindingMode.TwoWay, 
     }, 
    }); 

_datagGrid.ItemsSource = testList; 

=> es nicht funktioniert: der Header angezeigt wird, aber jede Zeile meiner Datagrid leer ist (schlechte Bindung?).


1- Was ist der einfachste Weg, um die Spalten einer Datagrid über das Usercontrol in dem XAML-Teil zu binden?

2- Was ist der einfachste Weg, die Spalten eines DataGrid über das UserControl programmatisch zu binden?

+0

Konnten Sie den XAML Ihres Benutzersteuerelements bekanntgeben? –

Antwort

0

Ich programmiere das programmatisch. So ziemlich der gleiche Code wie du hast. Funktioniert gut. Ich habe nie versucht, die Columns-Sammlung selbst zu binden, obwohl ich nicht verstehe, warum das nicht funktionieren sollte.

Ihre Nachricht ist ein wenig mehrdeutig. Wenn Sie sagen möchten, dass Ihre Spalte nicht angezeigt wird, müssen Sie die Spalten möglicherweise vor dem Erstellen der Tabelle hinzufügen. Wenn die Zeilen mit einem leeren Wert in der Spalte angezeigt werden, ist die Bindung "Property1" falsch.

Ich arbeite nicht in XAML so weiß nichts darüber.

Verwandte Themen