如果我有类似的东西:
<StackPanel Orientation="Horizontal">
<TextBlock Text="FIRST" Margin="5" VerticalAlignment="Center" />
<TextBlock Text="SECOND" Margin="5" VerticalAlignment="Center" />
<TextBlock Text="THIRD" Margin="5" VerticalAlignment="Center" />
<TextBlock Text="FOURTH" Margin="5" VerticalAlignment="Center" />
<TextBlock Text="FIFTH" Margin="5" VerticalAlignment="Center" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何创建一个动画,其中TextBlock
s将从屏幕的右侧逐个推出?
你能告诉我一个类似的例子吗?
我知道我可能需要使用Canvas
而不是StackPanel
,但如何妥善安排它们然后我不知道......
我目前正在尝试这样做,以便当我接受一个字符串时,它会填满第一个文本块,直到它溢出,然后它应该从文本块 2 开始。目前,我将它的字符串切成两段最后一个单词的最后一个结尾,我猜是可以放入文本块 1 的最大字符数,后半部分是 2,但我遇到的问题是永远不可能弄清楚在哪里切断文本,因为当它换行时,剩下的空间会占用不同的大小。所以我只剩下 textblock 1 在末尾有一些被截断的文本,这使得两者之间似乎缺少一些单词。有没有办法以编程方式找到文本块上的溢出?
ps- 文本块是在运行时在 C# 中创建的,而不是 wpf 标记。
这就是我所做的。我使用 myDescription 并尝试根据我近似的大小将其放入 myDesc[0] 和 [2] 中。问题是,如果我猜测大小阈值太大,它会给 myDesc[0] 留下一个 ... 或截断的词,如果我把它估计得太小,它就会有巨大的尴尬差距。我切断的任何数字都没有。
TextBlock[] myDesc = new TextBlock[2];
string myDescription = infoLoader.games[gameID].description[currentLanguage];
string[] myWords = myDescription.Split(' ');
string firstPart = "";
string secondPart = "";
int currentWord = 0;
// New and improved way
int currentLine = 0;
int charsInLine = 0;
while (currentWord < myWords.Length)
{
// Determine the size of the word based on the …
Run Code Online (Sandbox Code Playgroud) 我试图将最终用户许可协议(EULA)放入WP7 silverlight文本块控件.但是,它一直在截断我的文字.为什么会这样?WP7 silverlight文本块可以容纳的文字大小或字符数有限制吗?
下面是我在xaml方面所做的一个例子(其余的xaml周围是自动生成的默认值).
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<ScrollViewer>
<TextBlock x:Name="tbMsg" TextWrapping="Wrap"/>
</ScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我也试过使用TextBox,但现在,我甚至无法在TextBox中滚动.我已经明确地将VerticalScrollBarVisibility设置为Visible,但我仍然无法向下滚动TextBox.事实上,我甚至没有看到垂直滚动条.我不知道这个观察是否因为我仍在通过模拟器查看UI.
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBox x:Name="tbMsg" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible"/>
</Grid>
Run Code Online (Sandbox Code Playgroud) 我有一个包含 TextBlocks 的 ListBox。
有时 TextBlock 的内容太长,我希望此条目的高度根据需要增加一倍或三倍以容纳文本。
我试过 TextWrapping="Wrap" 但它不起作用。每个 TextBlock 仍然只有一行高度。
有没有一种简单的方法可以解决 XAML 中的问题?谢谢。
*附加信息:我试图简化问题,但也许完整的场景更好。
这是我的 XAML:
<ListBox Name="listBox1" ItemsSource="{Binding}" Margin="10" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock MinWidth="40" TextAlignment="Right" Text = "{Binding ProductPrice}" />
<TextBlock Text = "{Binding ProductName}" TextWrapping="Wrap" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud) 我想动态更改TextBlock
班级中的文本。
XAML 代码:
<TextBlock Name="Footer_text" Text=""/>
Run Code Online (Sandbox Code Playgroud)
C#:
string footerMainMenuText = "Setting";
Binding set = new Binding("");
set.Mode = BindingMode.OneWay;
set.Source = footerMainMenuText;
Footer_text.DataContext = footerMainMenuText;
Footer_text.SetBinding(TextBlock.TextProperty, set);
Run Code Online (Sandbox Code Playgroud)
我检查了最后一行,并且Footer_text.Text
设置正确。( Footer_text.Text="Setting"
),但TextBlock
在我的应用程序中没有显示“设置”。这里有什么问题?
关于TextBlock
C#中的UIElement,我们可以向Run
其中添加多个对象,这些对象将附加到inlines
属性中。这是我们在一个 .txt 文件中显示不同格式(字体、大小等)的多段文本的一种方式TextBlock
。
我的问题是:当我将两个Run
对象添加到一个对象中时TextBlock
,每个对象之间存在填充Run
。例如,我添加“12”和“34”Run
对象,最后它们将在视图中显示为“12 34”。但我需要的是它们应该作为一个单词连接在一起 - “1234” - 没有那种填充
我们可以使用任何设置来防止这种填充吗?
我正在使用componentart开发一个 wpf 应用程序我有一个这样的文本块
<TextBlock FontSize="28" Text="{Binding DataPoint.Y, StringFormat=\{0:#\\%\}}" Foreground="Black">
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我的 StringFormat 在数字后面放了一个 '%' 符号,但是如果我的数据是 0.0(我在后面的代码中填充了组件,我的变量是一个双精度)我得到“%”,但我想得到“ 0%”,我该怎么做?
我有一个基于Panorama控件的应用程序.单击其中一个Panorama控件页面(选项卡)上的项目可转到详细信息页面.在该详细信息页面上,我有下面的XAML呈现项目内容.如您所见,手机中的StackPanel托管了一个TextBlock :PanoramaItem.Header元素.我希望该元素中的文本包含TextBlock在视图模型中绑定的视频标题.我已将TextWrapping设置为wrap并且已为其指定了固定宽度,因此TextBlock不会增长/扩展(因此不会换行).文本确实换行,但有些行仍然会被剪切,其中一些单词显示为"cut off".我的XAML出了什么问题?
我读到了有关使用DockPanel的信息:
但是这个应用程序在很多不同的页面上都有一个StackPanel,所以如果我能坚持使用StackPanel,我更喜欢它.
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0" Visibility="{Binding IsInternetAvailable}" Background="{StaticResource PhoneAccentBrush}" Height="30">
<TextBlock Text="{Binding Path=LocalizedResources.NoConnection, Source={StaticResource LocalizedStrings}}" Margin="10, 0"/>
</Grid>
<phone:Panorama x:Name="PanoramaFavorites_DetailVideos" Grid.Row="2" Foreground="{StaticResource CustomApplicationTextBrush}" Background="{StaticResource CustomApplicationBackgroundImage}" SelectionChanged="panoramaFavorites_DetailVideos_SelectionChanged">
<phone:Panorama.Title>
<StackPanel Orientation="Horizontal" Margin="0,15,0,0">
<Image Height="85" Width="85" Source="http://appstudiodata.blob.core.windows.net/apps/1383/db936107-bce6-41a2-9d95-1d342f66c6bb/res/Logo-b3883645-a6cd-4cc8-82be-97c87a266656.png" Stretch="Uniform" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="5,0,10,5" RenderTransformOrigin="0.5,0.5" />
<TextBlock …
Run Code Online (Sandbox Code Playgroud) 我在Grid.Row和Grid.Column中绘制了一个椭圆.Row总是高于Column宽.
我想绘制一个填充网格列宽度的椭圆,以及它的高度使其成为一个完美的圆.
我还想在上面的椭圆的中心画一个数字.基本上以一个以数字为中心的圆圈结束.
我可以在我的Ellipse和包含数字的TextBlock上轻松设置HorizontalAlignment ="Stretch".这照顾了我的宽度.但是,即使Grid.Column宽度发生变化,如何使Ellipse和TextBlock的高度始终与其宽度匹配?
这里有一些XAML来说明这一点.在下面的XAML中,我希望硬编码的'63'基于Grid.Column宽度或椭圆的宽度范围:
<Ellipse Grid.Row="1" Grid.Column="0" HorizontalAlignment="Stretch" Height="63" Stroke="Black" StrokeThickness="3" VerticalAlignment="Top"/>
<TextBlock Grid.Row="1" Grid.Column="0" Width="63" Height="63" VerticalAlignment="Top" Text="1" TextAlignment="Center" FontSize="42" FontWeight="Bold"/>
Run Code Online (Sandbox Code Playgroud)
感谢你的帮助.我最终使用了Herdo的答案.只需将HorizontalAlignment设置为Stretch,然后将高度绑定到椭圆的实际宽度即可.我对椭圆和文本块做了同样的事情:
<Ellipse HorizontalAlignment="Stretch" Height="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"/>
<TextBlock HorizontalAlignment="Stretch" Height="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"/>
Run Code Online (Sandbox Code Playgroud) 我想在WPF应用程序中为TextBox文本创建一个小的“位置编辑器”。为此,我想使用RichTextBox。由于RichTextBox与FlowDocument一起使用,而TextBlock与InlineCollection一起使用,所以这不起作用。有没有一种简单的方法可以将RichtextBox文档转换为InlineCollection?(如果我仅允许RTB内容支持内联?)
textblock ×10
wpf ×8
c# ×6
xaml ×3
word-wrap ×2
animation ×1
binding ×1
componentart ×1
data-binding ×1
ellipse ×1
flowdocument ×1
listbox ×1
menu ×1
padding ×1
richtextbox ×1