C# 文本框没有获得焦点
我正在动态创建DataGridTemplateColumnC# 文本框没有获得焦点,c#,wpf,C#,Wpf,我正在动态创建DataGridTemplateColumn var binding = new Binding { Path = new PropertyPath("MyProperty"), UpdateSourceTrigger = UpdateSourceTrigger.LostFocus };
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);
var绑定=新绑定
{
路径=新属性路径(“MyProperty”),
UpdateSourceTrigger=UpdateSourceTrigger.LostFocus
};
var converterParameter=新列表{标题,行,myGrid};
binding.Converter=new MyConverter();
binding.ConverterParameter=ConverterParameter;
var textBoxValue=新FrameworkElementFactory(typeof(TextBox));
totalUnitsValue.SetBinding(TextBox.TextProperty,绑定);
totalUnitsValue.SetValue(TextBox.HorizontalContentAlignmentProperty,HorizontalAlignment.Right);
totalUnitsValue.SetValue(TextBox.WidthProperty,40.0);
totalUnitsValue.SetValue(TextBox.MarginProperty,新厚度(4,0,10,0));
var factoryElement=new frameworkelement工厂(typeof(StackPanel));
factoryElement.SetValue(StackPanel.OrientationProperty、Orientation.Horizontal);
factoryElement.AppendChild(textBoxValue);
var column=新的DataGridTemplateColumn
{
页眉=页眉,
CellTemplate=新数据模板{VisualTree=factoryElement}
};
myGrid.Columns.Add(column);
这适用于少数列。但是如果我创建了10列或更多列(80-90)文本框,那么最后创建的文本框不允许我更改值或不允许我将焦点放在文本框上。它变得像文本块。
编辑:
如果我移除STACKPANEL,那么文本框就没有问题,但是我需要显示多个元素,所以我需要某种容器。有什么帮助吗
请指导可能出现的问题。用户界面可能有问题。示例:如果DataGrid扩展过多,则其他元素背景可能会覆盖其中的某些部分。如果没有UI代码,很难说……您是否尝试过在代码中创建元素的首选方法?通过编写一段xaml并通过XamlReader加载它?请参阅。这似乎是一个虚拟化问题。尝试设置virtualzingstackpanel.isvirtualization=“false”