我有一個TextBox
和一個標籤。點擊一個按鈕後,我執行以下代碼:如何使用WPF將文本包裝到標籤中?
label1.Content = textbox1.Text;
我的問題是,如何啓用標籤的文字環繞?在一行中可能會顯示太多的文本,並且如果是這種情況,我希望它自動換行到多行。
我有一個TextBox
和一個標籤。點擊一個按鈕後,我執行以下代碼:如何使用WPF將文本包裝到標籤中?
label1.Content = textbox1.Text;
我的問題是,如何啓用標籤的文字環繞?在一行中可能會顯示太多的文本,並且如果是這種情況,我希望它自動換行到多行。
的Label
控制不直接支持文字環繞在WPF。您應該改用TextBlock
。 (當然,你可以把TextBlock
內Label
控制,如果你想。)
示例代碼:
<TextBlock TextWrapping="WrapWithOverflow">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec adipiscing
nulla quis libero egestas lobortis. Duis blandit imperdiet ornare. Nulla
ac arcu ut purus placerat congue. Integer pretium fermentum gravida.
</TextBlock>
而不是使用標籤類,我會建議使用TextBlock。這使您可以適當地設置TextWrapping。
你總是可以做到:
label1.Content = new TextBlock() { Text = textBox1.Text, TextWrapping = TextWrapping.Wrap };
然而,如果這一切的「標籤」是是用來顯示文字,使用TextBlock
代替。
好惡呸,裏德!代碼隱藏!驚恐的事件。驚恐的事件。
你可以把一個TextBlock標籤內:
<Label>
<TextBlock Text="Long Text . . . ." TextWrapping="Wrap" />
</Label>
我喜歡這種方法,因爲它允許您的標籤樣式適用於此文本塊,而無需爲TextBlock製作其他樣式。 – Sogger 2013-01-08 17:27:25
要包裹在標籤控件中的文本,改變標籤的模板如下:
<Style x:Key="ErrorBoxStyle" TargetType="{x:Type Label}">
<Setter Property="BorderBrush" Value="#FFF08A73"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="#FFFFE3DF"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Top"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Label}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true" CornerRadius="5" HorizontalAlignment="Stretch">
<TextBlock TextWrapping="Wrap" Text="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
通常你不能用TextBlock
,只要你想使用Target
屬性替換Label
(其中focu設置s到針對使用鍵盤時的控制例如ALT + C在下面的示例代碼),因爲這是所有Label
真的提供超過TextBlock
。
然而,Label
使用TextBlock
呈現文本(字符串是否被放置在Content
屬性,它通常是要);因此,你可以添加一個樣式TextBlock
的Label
內像這樣:
<Label
Content="_Content Text:"
Target="{Binding ElementName=MyTargetControl}">
<Label.Resources>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
</Label.Resources>
</Label>
<CheckBox x:Name = "MyTargetControl" />
這樣你能保持一個Label
的功能,同時還能夠自動換行。
我用下面的代碼。
<Label>
<Label.Content>
<AccessText TextWrapping="Wrap" Text="xxxxx"/>
</Label.Content>
</Label>
嘗試使用這種
lblresult.Content = lblresult.Content + "prime are :" + j + "\n";
我們需要把某種程度的控制,可以使文字像文本塊/文本
<Label Width="120" Height="100" >
<TextBlock TextWrapping="Wrap">
this is a very long text inside a textblock and this needs to be on multiline.
</TextBlock>
</Label>
<Label x:Name="datetimeofmsg"
HorizontalAlignment="Left" Margin="4.286,55,0,0"
VerticalAlignment="Top" Background="{x:Null}"
FontWeight="Bold" Width="61.714" Height="20" Foreground="White">
<Label.Content>
<AccessText TextWrapping="Wrap"/>
</Label.Content>
</Label>
...並設置`IsReadOnly =「true」`來模仿一個標籤:) – JulianM 2011-11-23 01:34:29
這很好,但如果你想使用標籤的目標屬性功能 - 這是公平的可能是*僅*原因是您將在TextBlock上使用標籤。我已經提供了這個問題的答案,顯示如何包裝在一個標籤(下) – PaulJ 2012-03-02 11:04:51
JulianM - 他們已經只讀http://stackoverflow.com/questions/5073244/making-textblock-readonly?也許他們不在2011 – 2014-05-27 23:02:07