XAML のものに対応する Binding を使用して DataGrid を作成しようとしています。
<WrapPanel Orientation="Vertical" Name="myWrapPanel" Margin="20,120,20,0">
<DataGrid BorderBrush="{x:Null}" Name="myDataGrid" ItemsSource="{Binding}" AutoGenerateColumns="False" AlternatingRowBackground="#8A2BE2" RowBackground="#FFA40000" Background="{x:Null}" CanUserAddRows="False" CanUserDeleteRows="True" HeadersVisibility="None" HorizontalAlignment="Left" Width="340" >
<DataGrid.Columns>
<DataGridTemplateColumn Width="10">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding Path=one, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="4*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock VerticalAlignment="Center" TextWrapping="NoWrap" HorizontalAlignment="Left" Name="TAG" Text="{Binding Path=two}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="5*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=three, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" HorizontalAlignment="Right" Background="{x:Null}" BorderBrush="{x:Null}" BorderThickness="0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</WrapPanel>
残念ながら、動的に作成されたものは同じではありません。チェックボックスの外観が異なり、マージンが正しくありません。これまでの私のコードは次のとおりです。
DataGrid myDataGrid2 = new DataGrid();
myDataGrid2.AutoGenerateColumns = false;
myDataGrid2.AlternatingRowBackground = (Brush)(new BrushConverter().ConvertFrom("#8A2BE2"));
myDataGrid2.RowBackground = (Brush)(new BrushConverter().ConvertFrom("#FFA40000"));
myDataGrid2.CanUserAddRows = false;
myDataGrid2.CanUserDeleteRows = true;
myDataGrid2.HeadersVisibility = DataGridHeadersVisibility.None;
myDataGrid2.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
myDataGrid2.BorderThickness = new Thickness(0);
Binding one = new Binding();
one.Path = new PropertyPath("one");
one.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
one.Mode = BindingMode.TwoWay;
DataGridCheckBoxColumn One = new DataGridCheckBoxColumn();
One.Width = 10;
One.Binding = one;
Binding two = new Binding();
two.Path = new PropertyPath("two");
two.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
two.Mode = BindingMode.OneWay;
DataGridTextColumn Two = new DataGridTextColumn();
Two.Width = new DataGridLength(4, DataGridLengthUnitType.Star);
Two.Binding = two;
Binding three = new Binding();
three.Path = new PropertyPath("three");
three.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
three.Mode = BindingMode.TwoWay;
DataGridTextColumn Three = new DataGridTextColumn();
Three.Width = new DataGridLength(5, DataGridLengthUnitType.Star);
Three.Binding = three;
myDataGrid2.Width = this.Width - 40;
myDataGrid2.Height = myDataGrid2.RowHeight * myDataGrid2.Items.Count + 20;
myDataGrid2.Columns.Add(One);
myDataGrid2.Columns.Add(Two);
myDataGrid2.Columns.Add(Three);
myWrapPanel.Children.Add(myDataGrid2);
myDataGrid2.ItemsSource = new ObservableCollection<Driver>(driver);
これは、WPF での私の最初のアプリです。何か助けはありますか?
Bindig はうまく機能しますが、ビジュアルだけが問題です。 http://imageshack.us/photo/my-images/194/8iok.png/ 画像でわかるように、上部が XAML で、下部が C# です。一部のスレッドが終了した後、一部のデータを動的に追加したいと考えています。それが要点です。