【问题标题】:Adding a TextBlock to a Label in C# Code WPF在 C# 代码 WPF 中将 TextBlock 添加到标签
【发布时间】:2014-06-22 08:09:38
【问题描述】:

在我的代码中,我正在创建一个新标签并对其进行格式化并使其成为堆叠面板的子项。但是在标签内部,我需要添加一个文本块,但我很难找到如何做到这一点。

仅使用代码我需要由代码创建的 WPF 像这样工作:

<Label Background="#000000" Foreground="#FFFFFF">
    <TextBlock TextWrapping="Wrap" Text="Text Here"/>
</Label>

但我不知道如何在代码中的标签中获取 TextBlock,我认为可行的方法不起作用,因为它是标签:

 NewLabel.Children.Add(NewTextBlock);

但是当我使用它来将 NewLabel 添加到 StackedPanel 时,这会起作用。

我需要这个工作的全部原因是因为我需要在标签中换行文本,但不能只使用 TextBlock 或其他控件。

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    只需将TextBlock设置为标签的内容即可达到您的要求。

    Label lbl = new Label ();
    TextBlock txtBlock = new TextBlock ();
    txtBlock.TextWrapping = TextWrapping.Wrap;
    lbl.Content = txtBlock;
    

    【讨论】:

      【解决方案2】:

      您还可以将“标签”样式添加到您的资源中,其中包含类型字符串的默认 DataTemplate。所以任何 Label 中的所有字符串内容都被包装了。

      <Application.Resources>
          <Style TargetType="Label">
              <Style.Resources>
                  <DataTemplate xmlns:sys="clr-namespace:System;assembly=mscorlib" DataType="{x:Type sys:String}">
                      <TextBlock TextWrapping="Wrap" Text="{Binding}" />
                  </DataTemplate>
              </Style.Resources>
          </Style>
      </Application.Resources>
      

      那么你需要做的就是设置字符串内容。

      <Label Content="A very long string for my Label" />
      

      var Label = new Label { Content = "A very long string for my Label" }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多