In WPF habe ich ein Raster mit einer Anzahl von definierten Spalten und die Breite jeder Spalte auf die Breite eines Datenraster Säule gebunden ist, etwa so:Wie kann ich WPF-Spaltenbreite im Code binden?
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding ElementName=dataGrid, Path=RowHeaderWidth}" />
<ColumnDefinition Width="{Binding ElementName=Column0, Path=ActualWidth}" />
<ColumnDefinition Width="{Binding ElementName=Column1, Path=ActualWidth}" />
Etc.
<Controls:DataGrid BorderBrush="White" ItemsSource="{Binding DataTable}"
Name="datagrid1" Grid.Row="2" RowHeaderWidth="0">
<Controls:DataGrid.Columns>
<Controls:DataGridTextColumn Header="Included" Width="50" x:Name="Column0" />
<Controls:DataGridTextColumn Header="First" Width="100" x:Name="Column1" />
Etc.
Wenn ich das Programm ausführen und die Größe manuell die Spalten , Kann ich die Größe der Grid-Spalten sehen (ShowGridLines = true) und Elemente, die an bestimmte Grid-Spalten gebunden sind, werden entsprechend verschoben.
Wenn ich jedoch versuche, die Datenraster- und Rasterspalten im Code hinzuzufügen, kann ich die Bindung nicht zum Funktionieren bringen (keine verbindlichen Fehler). Hier ein Beispiel:
binding = new Binding()
{
Source = dataGrid.Columns[col],
Path = new PropertyPath("ActualWidth"),
Mode = BindingMode.OneWay,
};
colDef.SetBinding(WidthProperty, binding);
ich andere Variationen versucht haben (zB Elementname = „DataGridColumn1“, Pfad = new PropertyPath („Actual“), aber bekommen entweder keine Fehler (und keine Bindung) oder eine ‚nicht Quelle finden . ‚Fehler oder eine Binding Wegfehlers für die Bindung
Es muss einen Weg geben die Bindung in Code zu setzen ...