在为GridViewColumn.DataTemplate创建VisualTree时无法设置TextBox.MinWidthProperty

时间:2014-03-19 23:57:00

标签: c# wpf

我正在尝试将GridViewColumn.DataTemplate设置为TextBox VisualTree。到目前为止的代码是:

//GridViewColumnCollection columns
DataTemplate template = new DataTemplate();
FrameworkElementFactory elementFactory = new FrameworkElementFactory(typeof(TextBox));
elementFactory.SetBinding(TextBox.TextProperty, new Binding { Path = new PropertyPath("Position") });
elementFactory.SetValue(TextBox.MinWidthProperty, new GridLength(50));
template.VisualTree = elementFactory;
columns[1].CellTemplate = template;

当我运行此代码时,我收到以下错误:

  

50不是属性'MinWidth'的有效值。

在这一行:     elementFactory.SetValue(TextBox.MinWidthProperty, new GridLength(50));

我也尝试将值设置为50,但无济于事!

enter image description here

我做错了什么?

提前致谢。

2 个答案:

答案 0 :(得分:1)

根据MSDNMinWidth依赖项属性的类型为double。您应该将其设置为double而不是GridLength对象。

  

物业价值

     

输入:System.Double

     

元件的最小宽度,与设备无关的单位(每单位1/96英寸)。默认值为0.0。该值可以是等于或大于0.0的任何值。但是,PositiveInfinity无效,也不是Double.NaN。

答案 1 :(得分:1)

我完全同意bouvierr。我正在研究一个WPF项目,这也是我遇到的问题。最后,通过MSDN文档,我注意到概念背后的代码只接受双数据类型作为整数。

textBox.SetValue(HeightProperty, 120.0);
textBox.SetValue(WidthProperty, 360.0);
textBox.SetValue(FontSizeProperty, 14.0);
textBox.SetValue(MinWidthProperty, 50.0);