如何使用UserControl类将TextBlock添加到画布

本文关键字:添加 TextBlock 何使用 UserControl 类将 | 更新日期: 2023-09-27 18:28:23

这是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的实例,给它一些属性。。。那么我不确定。

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

如何使用UserControl类将TextBlock添加到画布

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

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

在这两种情况下,您都不能/应该尝试将控件内部的TextBlock添加到myCanvas中。

似乎您应该阅读WPF用户控件和自定义控件。

如果你只想创建一个简单的TextBlock并将其添加到画布中,你会想做这样的事情:

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

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