0

DataGridTemplateColumn を動的に作成しています。

  var binding = new Binding
                    {

                        Path = new PropertyPath("MyProperty"),
                        UpdateSourceTrigger = UpdateSourceTrigger.LostFocus

                    };

                    var converterParameter = new List<object> { header, rows, myGrid };
                    binding.Converter = new MyConverter();
                    binding.ConverterParameter = converterParameter;


                    var textBoxValue = new FrameworkElementFactory(typeof(TextBox));
                    totalUnitsValue.SetBinding(TextBox.TextProperty, binding);
                    totalUnitsValue.SetValue(TextBox.HorizontalContentAlignmentProperty, HorizontalAlignment.Right);
                    totalUnitsValue.SetValue(TextBox.WidthProperty, 40.0);
                    totalUnitsValue.SetValue(TextBox.MarginProperty, new Thickness(4, 0, 10, 0));

var factoryElement = new FrameworkElementFactory(typeof(StackPanel));
                    factoryElement.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
                    factoryElement.AppendChild(textBoxValue );

  var column = new DataGridTemplateColumn
            {
                Header = header,
                CellTemplate = new DataTemplate { VisualTree = factoryElement }
            };

            myGrid.Columns.Add(column);

これは、いくつかの列でうまく機能します。しかし、10 個以上の列 (80 -90) の textBoxes を作成すると、最後に作成された TextBoxes で値を変更したり、TextBox にフォーカスを置いたりすることができなくなります。TextBlockのようになります。

編集:

STACKPANEL を削除しても、テキスト ボックスに問題はありませんが、複数の要素を表示する必要があるため、何らかの種類のコンテナーが必要です。

何ができるかを教えてください

4

0 に答える 0