如何使用UserControl类将TextBlock添加到Canvas?

时间:2012-03-18 21:25:03

标签: c# .net wpf xaml user-controls

这是XAML ......

<Canvas Name="myCanvas">
  <TextBlock Name="myBlock" FontFamily="Arial Black" FontSize="100" Foreground="Red" Text="R" Height="105" Width="96" Canvas.Left="61" Canvas.Top="80" /
</Canvas>

我有一个扩展userControl的部分类。

public partial class Card : UserControl

我还有一个使用此控件的测试表单,

public formTest()
{
  InitializeComponent();
  Card1.drawText();
  myCanvas.Children.Add(Card1); //myCanvas is defined in XAML
}

Card Card1 = new Card();

当TextBlock在我的UserControl中时,如何将一个TextBlock实例添加到myCanvas?所以,让我们说,

public partial class Card : UserControl
{
  private TextBlock txtBlock = new TextBlock();
  public Card()
  {
    txtBlock.Text = "Test";
    txtBlock.Foreground = brushFill;
  }
  public void drawText()
  {
    //uhhh idk
  }
}

一般情况下,我不明白如何在XAML中定义任何内容,然后通过代码添加属性。像这样我创建一个TextBlock实例,给它一些属性......然后我不确定。

感谢任何帮助。我也知道我应该使用用户控件,但我不知道为什么?

2 个答案:

答案 0 :(得分:1)

您的UserControl还应该关联一个XAML文件,TextBlock应该在该XAML中。

另一个选项是Card : Control(不是UserControl),然后你需要一个模板。

在两个coase中都不能/应该尝试从Control中添加一个TextBlock到myCanvas。

似乎你应该阅读WPF UserControls和Custom Controls。

答案 1 :(得分:1)

如果您只想创建一个简单的TextBlock并将其添加到画布,您将需要执行以下操作:

TextBlock textBlock = new TextBlock();
textBlock.Text = "Text";
myCanvas.Children.Add(textBlock);

然后,您可以通过Canvas.Children中的方法操作您添加到Canvas的所有内容。