TextBox
とラベルがあります。ボタンをクリックした後、次のコードを実行します。
label1.Content = textbox1.Text;
私の質問は、ラベルのテキスト折り返しを有効にするにはどうすればよいですか? 1行に表示するにはテキストが多すぎる可能性があります。その場合は、自動的に複数行に折り返します。
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>
Label
プロパティを使用したいので、TextBlock
をTarget
に置き換えることはできません(キーボードを使用する場合はターゲットコントロールにフォーカスが設定されます)。すべての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>
ラベルの内側にTextBlockを入れることができます。
<Label>
<TextBlock Text="Long Text . . . ." TextWrapping="Wrap" />
</Label>
ラベルコントロールでテキストを折り返すには、次のようにlabelのテンプレートを変更します。
<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>
Labelクラスを使う代わりに、 TextBlock を使うことをお勧めします。これにより、 TextWrapping を適切に設定できます。
あなたはいつでもできる:
label1.Content = new TextBlock() { Text = textBox1.Text, TextWrapping = TextWrapping.Wrap };
ただし、この「ラベル」がすべてテキストを表示するためのものである場合は、代わりにTextBlock
を使用してください。
Textblock/textboxのようにテキストを折り返すことができる何らかのコントロールを置く必要があります。
<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>
MySqlデータベースからデータを取得するためにこれを使用しました:
AccessText a = new AccessText();
a.Text=reader[1].ToString(); // MySql reader
a.Width = 70;
a.TextWrapping = TextWrapping.WrapWithOverflow;
labels[i].Content = a;
これを使ってみる
lblresult.Content = lblresult.Content + "prime are :" + j + "\n";