如何以编程方式设置TextBlock的Grid.Column属性

时间:2014-08-08 04:57:46

标签: wpf f#

所以我关注了这本书Practical WPF Charts and Graphics。我是第2章的第3个代码示例。我一直在使用代码no XAML在F#中重新创建它的内容。

我需要设置TextBlock的Grid.Column属性。只有当我做了自动完成时,我的TextBlocks才会出现没有网格属性,所以我研究了它,它被称为附加属性。我查了here on the MSDN

不幸的是,尽管知道并遵循MSDN的例子我无法让它发挥作用。我收到了这个错误。

 1 is not a valid value for property 'Column'

如果1无效,我不确定它应该是什么。 Visual Studio中的Intellisense告诉我第二个参数 SetValue()是一个实际上没用的对象。

这是我的代码。

type L3Display() as this =
   class
   inherit TextBlock()
   do
   this.Margin <- new Thickness(5.0,10.0,5.0,5.0)
   this.FontSize <- 14.0
   this.HorizontalAlignment <- HorizontalAlignment.Right
   this.SetValue(Grid.ColumnProperty, 1.0)
   this.TextAlignment <- TextAlignment.Center

   end

以下是本书中一些相关XAML的示例

   <TextBlock HorizontalAlignment="Right" Grid.Column="1" Grid.Row="2 Margin="5,5,10,5">X2</TextBlock>

2 个答案:

答案 0 :(得分:1)

您需要将ColumnProperty设置为integer而不是float

this.SetValue(Grid.ColumnProperty, 1)

答案 1 :(得分:1)

是否要将文本块设置为网格?下面的代码是vb,但这就是我的完成方式。

Dim txt1 As New TextBlock()
txt1.HorizontalAlignment = Windows.HorizontalAlignment.Center
txt1.VerticalAlignment = Windows.VerticalAlignment.Center
txt1.Text = ""
contentGrid.Children.Add(txt1)
Grid.SetColumn(txt1, 0)
Grid.SetRow(txt1, 0)

contentGrid是一个动态创建的代码隐藏的网格,这是我的大型代码的一部分,我在其中添加控件到网格。希望它有所帮助。