如何仅使用C#在WPF按钮上获取多行文本?我已经看到<LineBreak/>在XAML 中使用的示例,但我的按钮是在C#中以编程方式完全创建的.按钮上的数字和标签对应于域模型中的值,因此我认为我不能使用XAML来指定它.
我尝试了下面的天真方法,但它不起作用.
Button b = new Button();
b.Content = "Two\nLines";
Run Code Online (Sandbox Code Playgroud)
要么
b.Content = "Two\r\nLines";
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,我看到的只是文本的第一行("两个").
小智 96
或直接在XAML中:
<Button>
<TextBlock>Two<LineBreak/>Lines</TextBlock>
</Button>
Run Code Online (Sandbox Code Playgroud)
小智 47
我更喜欢这种方式:
<Button Width="100">
<TextBlock TextWrapping="Wrap">This is a fairly long button label</TextBlock>
</Button>
Run Code Online (Sandbox Code Playgroud)
它对我有用.
Has*_*man 34
答案很简单.只是
用来引入换行符,即:
<Button Content="Row 1 Text 
 Row 2 Text"/>
Run Code Online (Sandbox Code Playgroud)
Mer*_*avi 19
有几种方法可以通过XAML执行此操作:
Run Code Online (Sandbox Code Playgroud)<Button> <TextBlock TextAlignment="Center">Line 1<LineBreak/>Line 2</TextBlock> </Button>
这种方法很简单,但没有办法轻松控制文本的对齐方式:
Run Code Online (Sandbox Code Playgroud)<Button Content="Line 1 
 Line 2"/>
一旦按钮大小小于TextBlocks大小,它将简单地将内容分成两行或更多行
Run Code Online (Sandbox Code Playgroud)<Button> <TextBlock TextWrapping="Wrap" HorizontalAlignment="Center">Line 1 Line 2</TextBlock> </Button>
Run Code Online (Sandbox Code Playgroud)<Button> <StackPanel> <TextBlock Text="Line1" HorizontalAlignment="Center"/> <TextBlock Text="Line2" HorizontalAlignment="Center"/> </StackPanel> </Button>
Run Code Online (Sandbox Code Playgroud)<Button> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <TextBlock Text="Line1" HorizontalAlignment="Center"/> <TextBlock Text="Line2" HorizontalAlignment="Center"/> </Grid> </Button>
Den*_*O J 11
这就是我们在这里做的方式,它也允许轻松居中
<Button Height="40" Width="75">
<StackPanel>
<TextBlock Text="Line1" HorizontalAlignment="Center"/>
<TextBlock Text="Line2" HorizontalAlignment="Center"/>
</StackPanel>
</Button>
Run Code Online (Sandbox Code Playgroud)
原来"\n"工作正常.我的网格具有固定的大小,并且按钮中根本没有可视指示可用的文本更多(例如,没有"......"表示截止).一旦我慷慨地扩展了网格的大小,按钮文本就显示为两行.
你试过这个吗?
b.Content = new TextBlock {
Text = "Two\lLines",
TextWrapping = TextWrapping.Wrap };
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,那么您可以尝试添加StackPanel作为子项并添加两个TextBlock元素.
| 归档时间: |
|
| 查看次数: |
80676 次 |
| 最近记录: |